login-proxy.h revision e7dd5065d21c569e5e6ddd713bd345dadd1cf51d
195N/A#ifndef LOGIN_PROXY_H
195N/A#define LOGIN_PROXY_H
195N/A
195N/A#include "network.h"
195N/A
195N/Astruct client;
195N/Astruct login_proxy;
195N/A
195N/Aenum login_proxy_ssl_flags {
195N/A /* Use SSL/TLS enabled */
195N/A PROXY_SSL_FLAG_YES = 0x01,
195N/A /* Don't do SSL handshake immediately after connected */
195N/A PROXY_SSL_FLAG_STARTTLS = 0x02,
195N/A /* Don't require that the received certificate is valid */
195N/A PROXY_SSL_FLAG_ANY_CERT = 0x04
195N/A};
195N/A
195N/Astruct login_proxy_settings {
195N/A const char *host;
195N/A struct ip_addr ip;
3996N/A const char *dns_client_socket_path;
195N/A unsigned int port;
195N/A unsigned int connect_timeout_msecs;
195N/A /* send a notification about proxy connection to proxy-notify pipe
195N/A every n seconds */
778N/A unsigned int notify_refresh_secs;
618N/A enum login_proxy_ssl_flags ssl_flags;
195N/A};
195N/A
844N/A/* Called when new input comes from proxy. */
844N/Atypedef void proxy_callback_t(struct client *client);
195N/A
1273N/A/* Create a proxy to given host. Returns NULL if failed. Given callback is
195N/A called when new input is available from proxy. */
778N/Aint login_proxy_new(struct client *client,
778N/A const struct login_proxy_settings *set,
844N/A proxy_callback_t *callback);
844N/A/* Free the proxy. This should be called if authentication fails. */
778N/Avoid login_proxy_free(struct login_proxy **proxy);
778N/A
3661N/A/* Return TRUE if host/port/destuser combination points to same as current
3661N/A connection. */
3996N/Abool login_proxy_is_ourself(const struct client *client, const char *host,
3996N/A unsigned int port, const char *destuser);
3996N/A
195N/A/* Detach proxy from client. This is done after the authentication is
195N/A successful and all that is left is the dummy proxying. */
195N/Avoid login_proxy_detach(struct login_proxy *proxy);
195N/A
195N/A/* STARTTLS command was issued. */
195N/Aint login_proxy_starttls(struct login_proxy *proxy);
195N/A
195N/Astruct istream *login_proxy_get_istream(struct login_proxy *proxy);
195N/Astruct ostream *login_proxy_get_ostream(struct login_proxy *proxy);
195N/A
195N/Aconst char *login_proxy_get_host(const struct login_proxy *proxy) ATTR_PURE;
778N/Aunsigned int login_proxy_get_port(const struct login_proxy *proxy) ATTR_PURE;
195N/Aenum login_proxy_ssl_flags
195N/Alogin_proxy_get_ssl_flags(const struct login_proxy *proxy) ATTR_PURE;
195N/A
195N/Avoid login_proxy_kill_idle(void);
195N/A
778N/Avoid login_proxy_init(const char *proxy_notify_pipe_path);
195N/Avoid login_proxy_deinit(void);
195N/A
195N/A#endif
195N/A