psyced custom-tailored for you. The local.h in your local configuration directory is the place to put advanced configuration options, which are not part of psyced.ini. The file is held in C/LPC header format. Your configuration options use #define statements, similar to the way we create places. However we are in the process of integrating the configuration options into the keyword naming strategy of PSYC, so we are migrating away from C's traditional uppercase #define's.
Check also SMTP#Installation for SMTP-specific tunings.
Disable enforcement of all source hostnames in a TLS-encrypted circuit having to be listed in the node's certificate. psyced will revert to DNS resolution checking, which is suboptimal. This only affects multihoming servers: if a server is hosting users and places of several domains, he should provide the list of these names in the certificate using multiple dnsName fields. Any single hostname servers and especially anonymous client connections are not affected by this.
Believe CN fields in X.509 certificates to be valid hostnames if dnsName isn't defined. Since all of PSYC should use new certificates, we don't need to support this deprecated practice used in old certificates.
If for some reason your XMPP hostname isn't the same as your PSYC hostname, and your certificate only reflects the PSYC hostname, use this flag to disable external authentication. It is however a better idea to get both hostnames into the certificate.
Only used in particular gateway configurations. Authorization of users is not done by psyced itself, therefore all users are to be treated like registered ones.
This disables the special shortcut character to issue actions. Usually ":".
Do not store IP numbers or hostnames into files on harddisk. You can still inspect them as the users are online. The last login from message becomes slightly less useful by this.
Disable decentralized PSYC authentication functionality.
Disable PSYC friendship functionality.
Disable nickspace functionality.
Disable decentralized presence functionality.
Disable decentralized trust functionality.
To avoid excessive SPAM friendliness on the SMTP port, person names need to be prefixed with a tilde. This setting disables such precaution and makes the JIDs used by Jabber compatible with e-mail. You can then address people by user@host over both technologies. This sounds nice, but is too easy to abuse.
Disable support for Jabber-style methods to inquire various server statistics.
Don't allow unregistered users to connect. This is slightly different to _flag_disable_registration.
Different way to forward messages to clients. Probably buggy.
With this setting, psyced goes back to an old behaviour where users not using rich client protocols (and thus presumably rich user interfaces) automatically leave an old room when going into a new room. They can manually change this behaviour using /set multiplace on.
By default psyced does not allow newbie users - also known as unauthenticated - to send private messages to persons, as they could be of SPAM or other unwanted nature. Should you prefer a different behaviour, here's your tuning.
In early days the irssi client used to parse the @ character in a way that was not favorable for psyced. Now we don't even know of any client that runs into problems with the way we map uniforms into the IRC protocol. Should it happen to you, let us know tempestively. You may also want to activate this flag, then by issuing /set verbatimuniform off you can activate a hack that will replace all @'s with %'s. It's however always better to modify the client behaviour, because it's more comfortable to be able to use official unmodified uniforms in your client.
By default psyced will allow strangers to talk to you. Should you want to change that globally for all of your users, this #define will do so. After that strangers will have to provide trustiness or request friendship. Unregistered users are filtered in any case.
Produce a log called FLOW_MESSAGES to debug how messages move around psyced.
For debugging purposes maintain a log of all protocol traffic concerning the IRC implementation. It will be kept in a log called RAW_IRC. This can cause massive amounts of data on a production server and should not be used because of the privacy implications.
Same as above for the PSYC protocol.
Same as above for the XMPP implementation.
By default psyced accepts emails from most SMTP implementations, yet deters very stupid SPAM robots. With this flag the SMTP compliance barrier is raised, making it harder for SPAM to get through, but at the same time legitimate applications like python's smtplib no longer make it.
Change psyced's behaviour to only allow for places, no persons. This is generally unuseful, but in the way XMPP URIs are supported it will change the place addressing syntax from xmpp:*place@host to xmpp:place@host which obviously eliminates the possibility to address people on the same host (Implementation of this flag is currently limited to XMPP only. People are still allowed to use psyced, they simply will no longer be capable of communicating via XMPP directly).
Issue reports to the monitor room about funny or bogus certificates. Since on XMPP the majority of hosts is currently using improper or improperly signed certificates, and since we haven't made up our mind on our own encryption strategy, being picky on certificates isn't very useful. So by default only level-1 debug messages will be issued. Simply don't expect any communication with any remote server to be safe and private, currently.
You can take it one step further and ensure you will only have TLS connections to servers which provide proper credentials properly signed by an authority your server is configured to trust. You will not have a lot of servers to talk to, when you do this, although there is activism heading in that direction.
By default the /owners command and _request_owners method are only available to administrators, operators or by trusted remote control. With this flag you activate a tiny little bit of IRC-like anarchy: You trust the owners you defined, or who became owners by being the first to enter a private owned room, to nominate further owners, potentially removing themselves from the list of owners or leading to room ownerships battles. Enjoy the fun!
#define _host_XMPP <hostname>
psyced does not support multihoming of domains over XMPP. This is a not recommendable hack that will use a different default node name in XMPP-S2S than over PSYC. Avoid needing this, but it may be useful in short phases of transition. This was formerly known as JABBER_HOST.
#define _limit_amount_history_place_default <amount>
Unless _flag_disable_place_default is in place, define the limit on how many history messages are allowed to be displayed when autojoining the _place_default (as defined in psyced.ini). If left undefined, a default of 5 is used. XMPP vs. subscriptions are unaffected by this.
#define _limit_amount_history_export <amount>
#define _limit_amount_history_persistent <amount>
#define _limit_amount_log <amount>
#define _limit_amount_log_persistent <amount>
#define _path_archetype_place_default <string>
This tuning makes a powerful change: it defines which blueprint class is to be used for all places which do not otherwise exist, that is - made up on the spot by a user accessing them.
Here's another example where I've chosen the archetype flags myself:
#include <net.h> #echo Hello! This is my private archetype! #define PLACE_STYLE #include NET_PATH "place/archetype.gen"
I put it into my configuration directory as archetype.c and put
#define _path_archetype_place_default "local/archetype"
Notice how this one doesn't even #define ESSENTIALS, so the places will only come with a /style command, nothing else. Not even a /topic command. Not a useful example, but shows you the power of flexibility.
See also _flag_disable_places_arbitrary above for a way to disable arbitrary made up places in general.
#define _time_logon_delay_SMTP <seconds>
Amount of time the SMTP server waits before starting operation. This eliminates a percentage of dumb SPAM tools. The default is twenty seconds. When _level_debug is greater than 1 this delay is automatically deactivated for easier debugging.
#define _uniform_node <uniform>
Define what this psyced should believe its uniform to be, overriding any defaults made up by host and port settings in psyced.ini. This is useful when running a psyced node on a different port number as usual and enabling DNS SRV. You can now tell psyced to use a port-less uniform even if its internal logic would tell it otherwise. Using SRV is however not recommended, it just happens to work most of the time.
#define HTTP_URL <http-prefix>
If for some reason, like routing through proxies or when using kernel-based port forwarding, the server should advertise a different HTTP address than automatically defined by the host name of the server and the port number specified at configuration time, this define can be set in local.h
#define HTTP_URL "http://webapp.using.psyced.example.org"
#define HTTPS_URL <https-prefix>
Same as above for HTTP combined with TLS encryption. When defined, the server will prefer HTTPS_URL over HTTP_URL where privacy recommends it. If you are using HTTPS only, you don't need to provide any HTTP_URL or define a port for the plain HTTP service.
#define IRCGATE_NICK <nickname>
#define MOTD_FILE <filename>
In a totally illogical way the net/irc module supports a traditional ircd message of the day file which illogically isn't being shown with any other access. The <filename> is relative to the root of the LPC sandbox, which is the world directory.
It's a list of public places (uniform or local nick plus description) that appears in the /rooms command and in the XMPP public room directory discovery requests. This setting is meant to be changed someday. But until then, here's how it works:
#define PUBLIC_PLACES \ "RendezVous", "Meet me in the Middle", \ "CryptoChat", "Only for people with working encryption", \ "LIVE", "Moderated room for large scale event chats", \ "psyc://psyced.org/@welcome", "So why am I supposed to get psyced?"
#define REGISTER_URL <http-prefix>
Provide a page URL for registration. Only works together with _flag_disable_registration.
As you restart psyced you (and everyone on localhost) will be able to access a web configuration tool at http://localhost:44444/net/http/configure mostly useful for creating places if you don't feel comfortable with writing them up by hand.
Caution: This feature might not be up to date.
Should you need to access the configuration tool from a remote host, using a tunneling technology like ssh is probably the safest approach. If that is not an option you need to put the IP number of your browsing client into ENABLE_HOSTS of the local/hosts.h file in your configuration directory. See below.
In case it's just a temporary dynamic IP number don't forget to remove that entry after web configuration is complete.
In hosts.h you can specify the following lists of hosts.
#define ENABLED_HOSTS <hostlist>
As described in WEB_CONFIGURE above you can specifically enable hosts to access your server. You must provide IP numbers or abbreviations of them, like "127.0.0.", always with a trailing dot. The syntax is something like:
#define ENABLED_HOSTS "192.168.0.", "10."
#define DISABLED_HOSTS <hostlist>
This lets you block certain hosts from accessing your server. Same syntax as above. Example:
#define DISABLE_HOSTS "207.46.197.", "207.46.19."
#define LOCAL_HOSTS <hostlist>
Virtual Hosts aren't really supported in psyced yet, but should you have some reason to make several psyc: uniforms point to the same server host, you can use this #define with a comma seperated list of hostnames. In this case we really mean names, not IP numbers. Wildcards and subdomains are not permitted. Example:
#define LOCAL_HOSTS "psyc.nytimes.com", "psyc.latimes.com"