Summary
| Mentor(s): | Prof. Bill Griffin-Dubson Dr. Mike Murphy |
|---|---|
| Project Type: | Software development; user interface design; networking |
| Technologies: | Python, Qt (PySide6, Qt Designer), CIFS, Git |
| Undergraduate Credit: | CSCI 399, CSCI 490 |
| Graduate Credit: | IST 659 |
| Locality: | Main campus and/or remote |
Purpose
When files need to be shared on a local network, the Common Internet File System (CIFS) is widely supported across platforms. On Linux, primary support for connecting to CIFS shares is provided by the kernel, with helper tools from the Samba project. However, Samba and kernel-based mounts are primarily intended for the root user to mount known CIFS shares on the system. Browsing shares and accessing them as a regular user create a different set of issues.
Technically, Samba's smbclient command allows share browsing and transferring files to and from shares without requiring root access. However, it may be cumbersome to interface directly with Python. Pure Python implementations of the SMB protocol are available via the third-party pysmb and smbprotocol packages, with the latter supporting newer SMB/CIFS versions and Kerberos authentication for enterprise networks.
Discovering which servers have CIFS shares available is another step in browsing the local network. Practically speaking, the most reliable solution is probably to scan each device found on the network to see if it has the necessary ports open, then query the device for available shares. However, this approach generates a lot of excess traffic and should be undertaken with great care. Scanning on a corporate or institutional network might result in a port shutoff or other security response, since bad actors and malware often perform such operations.
Scope of Work
Add a network and share browser to TealFiler. Also add support for file operations on CIFS shares found over the network, without requiring root access to mount the share first. Add a menu option to enable the user to browse to a specific machine or mount a specific share without scanning the entire network. Also add a setting to make a network share available automatically when TealFiler is started. Be sure to make any external dependencies optional, so that TealFiler can still run (albeit without CIFS support) if a required library or program is missing.