From: Vsevolod Stakhov Date: Sat, 16 Feb 2019 13:52:55 +0000 (+0000) Subject: [Minor] Add functions to deal with url protocols X-Git-Tag: 1.9.0~139 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=144acb70eb098e1d88bbc0d270a3e115f8b6aa27;p=thirdparty%2Frspamd.git [Minor] Add functions to deal with url protocols --- diff --git a/src/libserver/url.c b/src/libserver/url.c index 461c232af1..ae2f84300c 100644 --- a/src/libserver/url.c +++ b/src/libserver/url.c @@ -3330,3 +3330,61 @@ rspamd_url_is_domain (int c) { return is_domain ((guchar)c); } + +const gchar* +rspamd_url_protocol_name (enum rspamd_url_protocol proto) +{ + const gchar *ret = "unknown"; + + switch (proto) { + case PROTOCOL_HTTP: + ret = "http"; + break; + case PROTOCOL_HTTPS: + ret = "https"; + break; + case PROTOCOL_FTP: + ret = "ftp"; + break; + case PROTOCOL_FILE: + ret = "file"; + break; + case PROTOCOL_MAILTO: + ret = "mailto"; + break; + case PROTOCOL_TELEPHONE: + ret = "telephone"; + break; + default: + break; + } + + return ret; +} + +enum rspamd_url_protocol +rspamd_url_protocol_from_string (const gchar *str) +{ + enum rspamd_url_protocol ret = PROTOCOL_UNKNOWN; + + if (strcmp (str, "http") == 0) { + ret = PROTOCOL_HTTP; + } + else if (strcmp (str, "https") == 0) { + ret = PROTOCOL_HTTPS; + } + else if (strcmp (str, "mailto") == 0) { + ret = PROTOCOL_MAILTO; + } + else if (strcmp (str, "ftp") == 0) { + ret = PROTOCOL_FTP; + } + else if (strcmp (str, "file") == 0) { + ret = PROTOCOL_FILE; + } + else if (strcmp (str, "telephone") == 0) { + ret = PROTOCOL_TELEPHONE; + } + + return ret; +} diff --git a/src/libserver/url.h b/src/libserver/url.h index 4c34be9e7c..4d19489212 100644 --- a/src/libserver/url.h +++ b/src/libserver/url.h @@ -79,13 +79,13 @@ enum uri_errno { }; enum rspamd_url_protocol { - PROTOCOL_FILE = 0, - PROTOCOL_FTP, - PROTOCOL_HTTP, - PROTOCOL_HTTPS, - PROTOCOL_MAILTO, - PROTOCOL_TELEPHONE, - PROTOCOL_UNKNOWN + PROTOCOL_FILE = 1u << 0, + PROTOCOL_FTP = 1u << 1, + PROTOCOL_HTTP = 1u << 2, + PROTOCOL_HTTPS = 1u << 3, + PROTOCOL_MAILTO = 1u << 4, + PROTOCOL_TELEPHONE = 1u << 5, + PROTOCOL_UNKNOWN = -1, }; /** @@ -240,4 +240,18 @@ const gchar * rspamd_url_encode (struct rspamd_url *url, gsize *dlen, */ gboolean rspamd_url_is_domain (int c); +/** + * Returns symbolic name for protocol + * @param proto + * @return + */ +const gchar* rspamd_url_protocol_name (enum rspamd_url_protocol proto); + + +/** + * Converts string to a numeric protocol + * @param str + * @return + */ +enum rspamd_url_protocol rspamd_url_protocol_from_string (const gchar *str); #endif