diff options
author | Coleman McFarland <coleman@de.limited> | 2024-04-19 18:27:47 -0400 |
---|---|---|
committer | Coleman McFarland <coleman@de.limited> | 2024-04-19 18:27:47 -0400 |
commit | 78084ee76d6e6ac4b5e94e015b354bd3cfa8e934 (patch) | |
tree | f832de4ba0a4a35aa8c268eaf44f4ff8b47cf61a | |
parent | f9ff75e1d38f43afe28953b7503aae59ad13eb6c (diff) |
OpenBSD upload and packaging
-rw-r--r-- | main.cpp | 53 | ||||
-rw-r--r-- | pkg/openbsd/chatops-wrapper | 7 | ||||
-rw-r--r-- | pkg/openbsd/rc.d/chatops | 11 | ||||
-rwxr-xr-x | upload.sh | 9 |
4 files changed, 53 insertions, 27 deletions
@@ -3,9 +3,11 @@ #include <strophe.h> #include <cstring> #include <string> +#include <fstream> #include <map> static int reconnect; + int handle_message(xmpp_conn_t *const conn, xmpp_stanza_t *const stanza, void *const userdata) { printf("Received message!\n"); return 1; @@ -19,7 +21,7 @@ enum StanzaType { std::map<std::string, StanzaType> stanzaTypeMap = { {"groupchat", GROUP_CHAT}, - {"chat", DIRECT_MESSAGE}, + {"chat", DIRECT_MESSAGE}, }; StanzaType stanza_type_from_str(const char *s) { @@ -32,8 +34,7 @@ StanzaType stanza_type_from_str(const char *s) { return UNKNOWN; } -int version_handler(xmpp_conn_t *conn, xmpp_stanza_t *stanza, void *userdata) -{ +int version_handler(xmpp_conn_t *conn, xmpp_stanza_t *stanza, void *userdata) { xmpp_stanza_t *reply, *query, *name, *version, *text; const char *ns; xmpp_ctx_t *ctx; @@ -79,15 +80,13 @@ int version_handler(xmpp_conn_t *conn, xmpp_stanza_t *stanza, void *userdata) return 1; } -static int _quit_handler(xmpp_conn_t *conn, void *userdata) -{ - (void)userdata; +static int _quit_handler(xmpp_conn_t *conn, void *userdata) { + (void) userdata; xmpp_disconnect(conn); return 0; } -int message_handler(xmpp_conn_t *conn, xmpp_stanza_t *stanza, void *userdata) -{ +int message_handler(xmpp_conn_t *conn, xmpp_stanza_t *stanza, void *userdata) { xmpp_ctx_t *ctx; ctx = (xmpp_ctx_t *) userdata; xmpp_stanza_t *body, *reply; @@ -138,7 +137,7 @@ int message_handler(xmpp_conn_t *conn, xmpp_stanza_t *stanza, void *userdata) reconnect = 1; xmpp_timed_handler_add(conn, _quit_handler, 500, nullptr); } else { - replytext = (char *)malloc(strlen(" to you too!") + strlen(intext) + 1); + replytext = (char *) malloc(strlen(" to you too!") + strlen(intext) + 1); strcpy(replytext, intext); strcat(replytext, " to you too!"); } @@ -181,13 +180,12 @@ void conn_handler(xmpp_conn_t *conn, xmpp_conn_event_t status, int error, xmpp_stream_error_t *stream_error, - void *userdata) -{ + void *userdata) { xmpp_ctx_t *ctx; ctx = (xmpp_ctx_t *) userdata; - (void)error; - (void)stream_error; + (void) error; + (void) stream_error; if (status == XMPP_CONN_CONNECT) { xmpp_stanza_t *pres; @@ -210,16 +208,37 @@ void conn_handler(xmpp_conn_t *conn, } } +std::string read_single_line_file(const std::string &filename) { + std::ifstream file(filename); + std::string line; + + if (!file) { + return ""; // Return an empty string or handle error appropriately + } + + if (std::getline(file, line)) { + return line; + } else { + return ""; // Handle failure to read line + } +} + int main(int argc, char **argv) { - char *pass; + const char *pass; + // first, try env var if ((pass = getenv("CHATOPS_PASSWORD")) == nullptr) { - printf("must set CHATOPS_PASSWORD\n"); - exit(2); + // next, try password file + auto pass_from_file = read_single_line_file("/etc/chatops/password"); + if (pass_from_file.empty()) { + printf("error: must set password via CHATOPS_PASSWORD or /etc/chatops/password file\n"); + exit(2); + } + pass = pass_from_file.c_str(); } char *jid; if ((jid = getenv("CHATOPS_JID")) == nullptr) { - jid = (char *)"devil@de.limited"; + jid = (char *) "devil@de.limited"; } xmpp_ctx_t *ctx; diff --git a/pkg/openbsd/chatops-wrapper b/pkg/openbsd/chatops-wrapper new file mode 100644 index 0000000..7bab300 --- /dev/null +++ b/pkg/openbsd/chatops-wrapper @@ -0,0 +1,7 @@ +#!/bin/ksh + +. /etc/chatops/env + +export CHATOPS_PASSWORD + +/usr/local/bin/chatops diff --git a/pkg/openbsd/rc.d/chatops b/pkg/openbsd/rc.d/chatops index d232bdb..11ef847 100644 --- a/pkg/openbsd/rc.d/chatops +++ b/pkg/openbsd/rc.d/chatops @@ -1,18 +1,9 @@ #!/bin/ksh daemon="/usr/local/bin/chatops" -daemon_flags="" # Add any flags if needed -#daemon_user="_chatops" # Run the daemon under a specific user . /etc/rc.d/rc.subr -rc_reload=NO # Set this if your daemon does not support reloading - -#pexp="/usr/local/bin/chatops" # Process name to look for - -# Read environment variables from a file -if [ -f /etc/chatops/env ]; then - . /etc/chatops/env -fi +# /etc/chatops/env must exist and set CHATOPS_PASSWORD rc_cmd $1 diff --git a/upload.sh b/upload.sh new file mode 100755 index 0000000..2e3399c --- /dev/null +++ b/upload.sh @@ -0,0 +1,9 @@ +#!/bin/sh +# + +rsync -aP \ + --exclude=.git \ + --exclude=buildDir \ + --exclude=.idea \ + ./ coleman@mammoth:~/Code/chatops/ + |