OC.L10N.register(
    "lib",
    {
    "Cannot write into \"config\" directory!" : "Impossibile scrivere nella cartella \"config\".",
    "This can usually be fixed by giving the webserver write access to the config directory" : "Ciò può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella \"config\"",
    "See %s" : "Vedere %s",
    "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Ciò può essere normalmente corretto %sfornendo al server web accesso in scrittura alla cartella \"config\"%s",
    "Sample configuration detected" : "Configurazione di esempio rilevata",
    "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "È stato rilevato che la configurazione di esempio è stata copiata. Ciò può compromettere la tua installazione e non è supportato. Leggi la documentazione prima di modificare il file config.php",
    "PHP %s or higher is required." : "Richiesto PHP %s o superiore",
    "PHP with a version lower than %s is required." : "Richiesta una versione di PHP minore di %s.",
    "%sbit or higher PHP required." : "Richiesto PHP %sbit o superiore.",
    "Following databases are supported: %s" : "I seguenti database sono supportati: %s",
    "The command line tool %s could not be found" : "Lo strumento da riga di comando %s non è stato trovato",
    "The library %s is not available." : "La libreria %s non è disponibile.",
    "Library %s with a version higher than %s is required - available version %s." : "Richiesta una versione della libreria %s maggiore di %s - versione disponibile %s.",
    "Library %s with a version lower than %s is required - available version %s." : "Richiesta una versione della libreria %s minore di %s - versione disponibile %s.",
    "Following platforms are supported: %s" : "Sono supportate le seguenti piattaforme: %s",
    "Server version %s or higher is required." : "È richiesta la versione %s o successiva.",
    "Server version %s or lower is required." : "È richiesta la versione %s o precedente.",
    "Unknown filetype" : "Tipo di file sconosciuto",
    "Invalid image" : "Immagine non valida",
    "today" : "oggi",
    "yesterday" : "ieri",
    "_%n day ago_::_%n days ago_" : ["%d giorno fa","%n giorni fa"],
    "last month" : "mese scorso",
    "_%n month ago_::_%n months ago_" : ["%n mese fa","%n mesi fa"],
    "last year" : "anno scorso",
    "_%n year ago_::_%n years ago_" : ["%n anno fa","%n anni fa"],
    "_%n hour ago_::_%n hours ago_" : ["%n ora fa","%n ore fa"],
    "_%n minute ago_::_%n minutes ago_" : ["%n minuto fa","%n minuti fa"],
    "seconds ago" : "secondi fa",
    "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Il modulo con id: %s non esiste. Abilitalo nelle impostazioni delle applicazioni o contatta il tuo amministratore.",
    "Empty filename is not allowed" : "Un nome di file vuoto non è consentito",
    "Dot files are not allowed" : "I file con un punto iniziale non sono consentiti",
    "4-byte characters are not supported in file names" : "I caratteri di 4 byte non sono supportati nei nomi dei file",
    "File name is a reserved word" : "Il nome del file è una parola riservata",
    "File name contains at least one invalid character" : "Il nome del file contiene almeno un carattere non valido",
    "File name is too long" : "Il nome del file è troppo lungo",
    "App directory already exists" : "La cartella dell'applicazione esiste già",
    "Can't create app folder. Please fix permissions. %s" : "Impossibile creare la cartella dell'applicazione. Correggi i permessi. %s",
    "Archive does not contain a directory named %s" : "L'archivio non contiene una cartella con nome %s",
    "No source specified when installing app" : "Nessuna fonte specificata durante l'installazione dell'applicazione",
    "No href specified when installing app from http" : "Nessun href specificato durante l'installazione dell'applicazione da http",
    "No path specified when installing app from local file" : "Nessun percorso specificato durante l'installazione dell'applicazione da file locale",
    "Archives of type %s are not supported" : "Gli archivi di tipo %s non sono supportati",
    "Failed to open archive when installing app" : "Apertura archivio non riuscita durante l'installazione dell'applicazione",
    "App does not provide an info.xml file" : "L'applicazione non fornisce un file info.xml",
    "App cannot be installed because appinfo file cannot be read." : "L'applicazione non può essere installata poiché il file appinfo non può essere letto.",
    "Signature could not get checked. Please contact the app developer and check your admin screen." : "La firma non può essere verificata. Contatta lo sviluppatore dell'applicazione e controlla la schermata di amministrazione.",
    "App can't be installed because of not allowed code in the App" : "L'applicazione non può essere installata a causa di codice non consentito al suo interno",
    "App can't be installed because it is not compatible with this version of the server" : "L'applicazione non può essere installata perché non è compatibile con questa versione del server",
    "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "L'applicazione non può essere installata poiché contiene l'etichetta <shipped>true<shipped> che è consentita per le applicazioni native",
    "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "L'applicazione non può essere installata poiché la versione nel file info.xml non è la stessa riportata dall'app store",
    "%s enter the database username and name." : "%s digita il nome utente e il nome del database.",
    "%s enter the database username." : "%s digita il nome utente del database.",
    "%s enter the database name." : "%s digita il nome del database.",
    "%s you may not use dots in the database name" : "%s non dovresti utilizzare punti nel nome del database",
    "Oracle connection could not be established" : "La connessione a Oracle non può essere stabilita",
    "Oracle username and/or password not valid" : "Nome utente e/o password di Oracle non validi",
    "DB Error: \"%s\"" : "Errore DB: \"%s\"",
    "Offending command was: \"%s\"" : "Il comando non consentito era: \"%s\"",
    "You need to enter either an existing account or the administrator." : "È necessario inserire un account esistente o l'amministratore.",
    "Offending command was: \"%s\", name: %s, password: %s" : "Il comando non consentito era: \"%s\", nome: %s, password: %s",
    "PostgreSQL username and/or password not valid" : "Nome utente e/o password di PostgreSQL non validi",
    "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X non è supportato e %s non funzionerà correttamente su questa piattaforma. Usalo a tuo rischio!",
    "For the best results, please consider using a GNU/Linux server instead." : "Per avere il risultato migliore, prendi in considerazione l'utilizzo di un server GNU/Linux.",
    "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Sembra che questa istanza di %s sia in esecuzione in un ambiente PHP a 32 bit e che open_basedir sia stata configurata in php.ini. Ciò comporterà problemi con i file più grandi di 4 GB ed è altamente sconsigliato.",
    "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Rimuovi l'impostazione di open_basedir nel tuo php.ini o passa alla versione a 64 bit di PHP.",
    "Set an admin username." : "Imposta un nome utente di amministrazione.",
    "Set an admin password." : "Imposta una password di amministrazione.",
    "Can't create or write into the data directory %s" : "Impossibile creare o scrivere nella cartella dei dati %s",
    "Invalid Federated Cloud ID" : "ID di cloud federata non valido",
    "%s shared »%s« with you" : "%s ha condiviso «%s» con te",
    "%s via %s" : "%s tramite %s",
    "Sharing %s failed, because the backend does not allow shares from type %i" : "Condivisione di %s non riuscita, poiché il motore non consente condivisioni del tipo %i",
    "Sharing %s failed, because the file does not exist" : "Condivisione di %s non riuscita, poiché il file non esiste",
    "You are not allowed to share %s" : "Non ti è consentito condividere %s",
    "Sharing %s failed, because you can not share with yourself" : "Condivisione di %s non riuscita, poiché non puoi condividere con te stesso",
    "Sharing %s failed, because the user %s does not exist" : "Condivisione di %s non riuscita, poiché l'utente %s non esiste",
    "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Condivisione di %s non riuscita, poiché l'utente %s non appartiene ad alcun gruppo di cui %s è membro",
    "Sharing %s failed, because this item is already shared with %s" : "Condivisione di %s non riuscita, poiché l'oggetto è già condiviso con %s",
    "Sharing %s failed, because this item is alread<style>pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */</style><div class="highlight"><pre><span></span><span class="cp">#ifndef RSPAMD_SPF_H</span>
<span class="cp">#define RSPAMD_SPF_H</span>

<span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;config.h&quot;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;ref.h&quot;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;addr.h&quot;</span>

<span class="k">struct</span><span class="w"> </span><span class="nc">rspamd_task</span><span class="p">;</span>
<span class="k">struct</span><span class="w"> </span><span class="nc">spf_resolved</span><span class="p">;</span>

<span class="k">typedef</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="n">spf_cb_t</span><span class="p">)(</span><span class="k">struct</span><span class="w"> </span><span class="nc">spf_resolved</span><span class="w"> </span><span class="o">*</span><span class="n">record</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">rspamd_task</span><span class="w"> </span><span class="o">*</span><span class="n">task</span><span class="p">);</span>

<span class="k">typedef</span><span class="w"> </span><span class="k">enum</span><span class="w"> </span><span class="n">spf_mech_e</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="n">SPF_FAIL</span><span class="p">,</span>
<span class="w">	</span><span class="n">SPF_SOFT_FAIL</span><span class="p">,</span>
<span class="w">	</span><span class="n">SPF_PASS</span><span class="p">,</span>
<span class="w">	</span><span class="n">SPF_NEUTRAL</span>
<span class="p">}</span><span class="w"> </span><span class="n">spf_mech_t</span><span class="p">;</span>

<span class="k">typedef</span><span class="w"> </span><span class="k">enum</span><span class="w"> </span><span class="n">spf_action_e</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="n">SPF_RESOLVE_MX</span><span class="p">,</span>
<span class="w">	</span><span class="n">SPF_RESOLVE_A</span><span class="p">,</span>
<span class="w">	</span><span class="n">SPF_RESOLVE_PTR</span><span class="p">,</span>
<span class="w">	</span><span class="n">SPF_RESOLVE_AAA</span><span class="p">,</span>
<span class="w">	</span><span class="n">SPF_RESOLVE_REDIRECT</span><span class="p">,</span>
<span class="w">	</span><span class="n">SPF_RESOLVE_INCLUDE</span><span class="p">,</span>
<span class="w">	</span><span class="n">SPF_RESOLVE_EXISTS</span><span class="p">,</span>
<span class="w">	</span><span class="n">SPF_RESOLVE_EXP</span>
<span class="p">}</span><span class="w"> </span><span class="n">spf_action_t</span><span class="p">;</span>

<span class="cp">#define RSPAMD_SPF_FLAG_IPV6 (1 &lt;&lt; 0)</span>
<span class="cp">#define RSPAMD_SPF_FLAG_IPV4 (1 &lt;&lt; 1)</span>
<span class="cp">#define RSPAMD_SPF_FLAG_PROCESSED (1 &lt;&lt; 2)</span>
<span class="cp">#define RSPAMD_SPF_FLAG_ANY (1 &lt;&lt; 3)</span>
<span class="cp">#define RSPAMD_SPF_FLAG_PARSED (1 &lt;&lt; 4)</span>
<span class="cp">#define RSPAMD_SPF_FLAG_VALID (1 &lt;&lt; 5)</span>
<span class="cp">#define RSPAMD_SPF_FLAG_REFRENCE (1 &lt;&lt; 6)</span>
<span class="cp">#define RSPAMD_SPF_FLAG_REDIRECT (1 &lt;&lt; 7)</span>

<span class="k">struct</span><span class="w"> </span><span class="nc">spf_addr</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="n">guchar</span><span class="w"> </span><span class="n">addr6</span><span class="p">[</span><span class="k">sizeof</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">in6_addr</span><span class="p">)];</span>
<span class="w">	</span><span class="n">guchar</span><span class="w"> </span><span class="n">addr4</span><span class="p">[</span><span class="k">sizeof</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">in_addr</span><span class="p">)];</span>
<span class="w">	</span><span class="k">union</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="k">struct</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="n">guint16</span><span class="w"> </span><span class="n">mask_v4</span><span class="p">;</span>
<span class="w">			</span><span class="n">guint16</span><span class="w"> </span><span class="n">mask_v6</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span><span class="w"> </span><span class="n">dual</span><span class="p">;</span>
<span class="w">		</span><span class="n">guint32</span><span class="w"> </span><span class="n">idx</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span><span class="w"> </span><span class="n">m</span><span class="p">;</span>
<span class="w">	</span><span class="n">guint</span><span class="w"> </span><span class="n">flags</span><span class="p">;</span>
<span class="w">	</span><span class="n">spf_mech_t</span><span class="w"> </span><span class="n">mech</span><span class="p">;</span>
<span class="w">	</span><span class="n">gchar</span><span class="w"> </span><span class="o">*</span><span class="n">spf_string</span><span class="p">;</span>
<span class="w">	</span><span class="k">struct</span><span class="w"> </span><span class="nc">spf_addr</span><span class="w"> </span><span class="o">*</span><span class="n">prev</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="n">next</span><span class="p">;</span>
<span class="p">};</span>

<span class="k">struct</span><span class="w"> </span><span class="nc">spf_resolved</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="n">gchar</span><span class="w"> </span><span class="o">*</span><span class="n">domain</span><span class="p">;</span>
<span class="w">	</span><span class="n">guint</span><span class="w"> </span><span class="n">ttl</span><span class="p">;</span>
<span class="w">	</span><span class="n">GArray</span><span class="w"> </span><span class="o">*</span><span class="n">elts</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Flat list of struct spf_addr */</span>
<span class="w">	</span><span class="n">ref_entry_t</span><span class="w"> </span><span class="n">ref</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Refcounting */</span>
<span class="p">};</span>


<span class="cm">/*</span>
<span class="cm"> * Resolve spf record for specified task and call a callback after resolution fails/succeed</span>
<span class="cm"> */</span>
<span class="n">gboolean</span><span class="w"> </span><span class="nf">resolve_spf</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">rspamd_task</span><span class="w"> </span><span class="o">*</span><span class="n">task</span><span class="p">,</span><span class="w"> </span><span class="n">spf_cb_t</span><span class="w"> </span><span class="n">callback</span><span class="p">);</span>

<span class="cm">/*</span>
<span class="cm"> * Get a domain for spf for specified task</span>
<span class="cm"> */</span>
<span class="k">const</span><span class="w"> </span><span class="n">gchar</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nf">get_spf_domain</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">rspamd_task</span><span class="w"> </span><span class="o">*</span><span class="n">task</span><span class="p">);</span>


<span class="cm">/*</span>
<span class="cm"> * Increase refcount</span>
<span class="cm"> */</span>
<span class="k">struct</span><span class="w"> </span><span class="nc">spf_resolved</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">spf_record_ref</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">spf_resolved</span><span class="w"> </span><span class="o">*</span><span class="n">rec</span><span class="p">);</span>

<span class="cm">/*</span>
<span class="cm"> * Decrease refcount</span>
<span class="cm"> */</span>
<span class="kt">void</span><span class="w"> </span><span class="nf">spf_record_unref</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">spf_resolved</span><span class="w"> </span><span class="o">*</span><span class="n">rec</span><span class="p">);</span>

<span class="cp">#endif</span>
</pre></div>
</code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.39.1</a>) at 2025-02-15 04:23:12 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>