privops.h
上传用户:ig0539
上传日期:2022-05-21
资源大小:181k
文件大小:3k
源码类别:

Ftp客户端

开发平台:

C/C++

  1. #ifndef VSF_PRIVOPS_H
  2. #define VSF_PRIVOPS_H
  3. struct mystr;
  4. struct vsf_session;
  5. /* vsf_privop_get_ftp_port_sock()
  6.  * PURPOSE
  7.  * Return a network socket potentially bound to a privileged port (less than
  8.  * 1024) and connected to the remote.
  9.  * PARAMETERS
  10.  * p_sess       - the current session object
  11.  * remote_port  - the remote port to connect to
  12.  * RETURNS
  13.  * A file descriptor which is a socket bound to the privileged port, and
  14.  * connected to the remote on the specified port.
  15.  * Kills the process / session if the bind() fails.
  16.  * Returns -1 if the bind() worked but the connect() was not possible.
  17.  */
  18. int vsf_privop_get_ftp_port_sock(struct vsf_session* p_sess,
  19.                                  unsigned short remote_port);
  20. /* vsf_privop_pasv_cleanup()
  21.  * PURPOSE
  22.  * Makes sure any listening passive socket is closed.
  23.  * PARAMETERS
  24.  * p_sess       - the current session object
  25.  */
  26. void vsf_privop_pasv_cleanup(struct vsf_session* p_sess);
  27. /* vsf_privop_pasv_listen()
  28.  * PURPOSE
  29.  * Start listening for an FTP data connection.
  30.  * PARAMETERS
  31.  * p_sess       - the current session object
  32.  * RETURNS
  33.  * The port we ended up listening on.
  34.  */
  35. unsigned short vsf_privop_pasv_listen(struct vsf_session* p_sess);
  36. /* vsf_privop_pasv_active()
  37.  * PURPOSE
  38.  * Determine whether there is a passive listening socket active.
  39.  * PARAMETERS
  40.  * p_sess       - the current session object
  41.  * RETURNS
  42.  * 1 if active, 0 if not.
  43.  */
  44. int vsf_privop_pasv_active(struct vsf_session* p_sess);
  45. /* vsf_privop_accept_pasv()
  46.  * PURPOSE
  47.  * Accept a connection on the listening data socket.
  48.  * PARAMETERS
  49.  * p_sess       - the current session object
  50.  * RETURNS
  51.  * The file descriptor of the accepted incoming connection; or -1 if a
  52.  * network error occurred or -2 if the incoming connection was from the
  53.  * wrong IP (security issue).
  54.  */
  55. int vsf_privop_accept_pasv(struct vsf_session* p_sess);
  56. /* vsf_privop_do_file_chown()
  57.  * PURPOSE
  58.  * Takes a file owned by the unprivileged FTP user, and change the ownership
  59.  * to the value defined in the config file.
  60.  * PARAMETERS
  61.  * p_sess       - the current session object
  62.  * fd           - the file descriptor of the regular file
  63.  */
  64. void vsf_privop_do_file_chown(struct vsf_session* p_sess, int fd);
  65. enum EVSFPrivopLoginResult
  66. {
  67.   kVSFLoginNull = 0,
  68.   kVSFLoginFail,
  69.   kVSFLoginAnon,
  70.   kVSFLoginReal
  71. };
  72. /* vsf_privop_do_login()
  73.  * PURPOSE
  74.  * Check if the supplied username/password combination is valid. This
  75.  * interface caters for checking both anonymous and real logins.
  76.  * PARAMETERS
  77.  * p_sess       - the current session object
  78.  * p_pass_str   - the proposed password
  79.  * RETURNS
  80.  * kVSFLoginFail - access denied
  81.  * kVSFLoginAnon - anonymous login credentials OK
  82.  * kVSFLoginReal - real login credentials OK
  83.  */
  84. enum EVSFPrivopLoginResult vsf_privop_do_login(
  85.   struct vsf_session* p_sess, const struct mystr* p_pass_str);
  86. #endif /* VSF_PRIVOPS_H */