+++ /dev/null
-This folder represents the files that should be placed under:
-/etc/nginx
-
-To install:
-* Delete all files under /etc/nginx/sites-enabled
-* Either:
- * Copy 'mctxconfig' (under sites-enabled) to /etc/nginx/sites-available/
- and create a symlink to that file under /etc/nginx/sites-enabled/
- * Create a symlink directly from 'mctxconfig' to
- /etc/etc/nginx/sites-enabled/
-* Replace /etc/nginx/fastcgi_params and /etc/nginx/mime.types with the
- provided files (either by copying or symlinking)
-
-Note:
-To get the login functionality working, you need to place a .htpasswd file
-under /usr/share/nginx/access (create folder if it doesn't exist). To generate
-the htpasswd file, install the apache2-utils package and use the 'htpasswd'
-executable.
-
-
-P.S: (I always forget these)
-Set file permissions to: 644
-Set folder permissions to: 755
\ No newline at end of file
+++ /dev/null
-fastcgi_param QUERY_STRING $query_string;
-fastcgi_param REQUEST_METHOD $request_method;
-fastcgi_param CONTENT_TYPE $content_type;
-fastcgi_param CONTENT_LENGTH $content_length;
-
-fastcgi_param SCRIPT_FILENAME $request_filename;
-fastcgi_param SCRIPT_NAME $fastcgi_script_name;
-fastcgi_param REQUEST_URI $request_uri;
-fastcgi_param DOCUMENT_URI $document_uri;
-fastcgi_param DOCUMENT_ROOT $document_root;
-fastcgi_param SERVER_PROTOCOL $server_protocol;
-
-fastcgi_param GATEWAY_INTERFACE CGI/1.1;
-fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
-fastcgi_param SERVER_HOSTNAME mctxsoft;
-
-fastcgi_param REMOTE_ADDR $remote_addr;
-fastcgi_param REMOTE_PORT $remote_port;
-fastcgi_param REMOTE_USER $remote_user;
-fastcgi_param SERVER_ADDR $server_addr;
-fastcgi_param SERVER_PORT $server_port;
-fastcgi_param SERVER_NAME $server_name;
-
-fastcgi_param HTTPS $https;
-
-# PHP only, required if PHP was built with --enable-force-cgi-redirect
-fastcgi_param REDIRECT_STATUS 200;
+++ /dev/null
-types {
- text/html html htm shtml;
- text/css css;
- text/xml xml rss;
- image/gif gif;
- image/jpeg jpeg jpg;
- application/x-javascript js;
- application/atom+xml atom;
-
- text/mathml mml;
- text/plain log;
- text/plain txt;
- text/vnd.sun.j2me.app-descriptor jad;
- text/vnd.wap.wml wml;
- text/x-component htc;
-
- image/png png;
- image/tiff tif tiff;
- image/vnd.wap.wbmp wbmp;
- image/x-icon ico;
- image/x-jng jng;
- image/x-ms-bmp bmp;
- image/svg+xml svg svgz;
-
- application/java-archive jar war ear;
- application/json json;
- application/mac-binhex40 hqx;
- application/msword doc;
- application/pdf pdf;
- application/postscript ps eps ai;
- application/rtf rtf;
- application/vnd.ms-excel xls;
- application/vnd.ms-powerpoint ppt;
- application/vnd.wap.wmlc wmlc;
- application/vnd.google-earth.kml+xml kml;
- application/vnd.google-earth.kmz kmz;
- application/x-7z-compressed 7z;
- application/x-cocoa cco;
- application/x-java-archive-diff jardiff;
- application/x-java-jnlp-file jnlp;
- application/x-makeself run;
- application/x-perl pl pm;
- application/x-pilot prc pdb;
- application/x-rar-compressed rar;
- application/x-redhat-package-manager rpm;
- application/x-sea sea;
- application/x-shockwave-flash swf;
- application/x-stuffit sit;
- application/x-tcl tcl tk;
- application/x-x509-ca-cert der pem crt;
- application/x-xpinstall xpi;
- application/xhtml+xml xhtml;
- application/zip zip;
-
- application/octet-stream bin exe dll;
- application/octet-stream deb;
- application/octet-stream dmg;
- application/octet-stream eot;
- application/octet-stream iso img;
- application/octet-stream msi msp msm;
- application/ogg ogx;
-
- audio/midi mid midi kar;
- audio/mpeg mpga mpega mp2 mp3 m4a;
- audio/ogg oga ogg spx;
- audio/x-realaudio ra;
- audio/webm weba;
-
- video/3gpp 3gpp 3gp;
- video/mp4 mp4;
- video/mpeg mpeg mpg mpe;
- video/ogg ogv;
- video/quicktime mov;
- video/webm webm;
- video/x-flv flv;
- video/x-mng mng;
- video/x-ms-asf asx asf;
- video/x-ms-wmv wmv;
- video/x-msvideo avi;
-}
+++ /dev/null
-# You may add here your
-# server {
-# ...
-# }
-# statements for each of your virtual hosts to this file
-
-##
-# You should look at the following URL's in order to grasp a solid understanding
-# of Nginx configuration files in order to fully unleash the power of Nginx.
-# http://wiki.nginx.org/Pitfalls
-# http://wiki.nginx.org/QuickStart
-# http://wiki.nginx.org/Configuration
-#
-# Generally, you will want to move this file somewhere, and start with a clean
-# file but keep this around for reference. Or just disable in sites-enabled.
-#
-# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
-##
-
-server {
- listen 80;
- listen [::]:80 default_server ipv6only=on;
-
- root /usr/share/nginx/html;
- index index.php index.html index.htm;
-
- # Make site accessible from http://localhost/
- server_name localhost;
-
- location / {
- # First attempt to serve request as file, then
- # as directory, then fall back to displaying a 404.
- try_files $uri $uri/ =404;
- # Uncomment to enable naxsi on this location
- # include /etc/nginx/naxsi.rules
- }
-
- # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
- #location /RequestDenied {
- # proxy_pass http://127.0.0.1:8080;
- #}
-
- #error_page 404 /404.html;
-
- # redirect server error pages to the static page /50x.html
- #
- #error_page 500 502 503 504 /50x.html;
- #location = /50x.html {
- # root /usr/share/nginx/html;
- #}
-
- # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
- #
- location ~ \.php$ {
- fastcgi_split_path_info ^(.+\.php)(/.+)$;
- # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
- #
- # # With php5-cgi alone:
- # fastcgi_pass 127.0.0.1:9000;
- # # With php5-fpm:
- fastcgi_pass unix:/var/run/php5-fpm.sock;
- fastcgi_index index.php;
- include fastcgi_params;
- }
-
- # deny access to .htaccess files, if Apache's document root
- # concurs with nginx's one
- #
- location ~ /\.ht {
- deny all;
- }
-
- #MCTX API
- location /api {
- #Login area
- location ^~ /api/control {
- auth_basic "Restricted Access";
- auth_basic_user_file /usr/share/nginx/access/.htpasswd;
-
- fastcgi_pass 127.0.0.1:9005;
- fastcgi_param DOCUMENT_URI_LOCAL control;
- include fastcgi_params;
- }
- location ~ ^/api/?([^?]*) {
- fastcgi_pass 127.0.0.1:9005;
- fastcgi_param DOCUMENT_URI_LOCAL $1;
- include fastcgi_params;
- }
- }
-}
-
-
-# another virtual host using mix of IP-, name-, and port-based configuration
-#
-#server {
-# listen 8000;
-# listen somename:8080;
-# server_name somename alias another.alias;
-# root html;
-# index index.html index.htm;
-#
-# location / {
-# try_files $uri $uri/ =404;
-# }
-#}
-
-
-# HTTPS server
-#
-#server {
-# listen 443;
-# server_name localhost;
-#
-# root html;
-# index index.html index.htm;
-#
-# ssl on;
-# ssl_certificate cert.pem;
-# ssl_certificate_key cert.key;
-#
-# ssl_session_timeout 5m;
-#
-# ssl_protocols SSLv3 TLSv1;
-# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
-# ssl_prefer_server_ciphers on;
-#
-# location / {
-# try_files $uri $uri/ =404;
-# }
-#}
--- /dev/null
+To get syslog and nginx to work correctly:
+* Update nginx with the latest config file
+* Copy the config file to /etc/rsyslog.d/
+* Restart rsyslog with /etc/init.d/rsyslog restart
+* chmod the log file: chmod 644 /var/log/mctxserv.log
--- /dev/null
+This folder represents the files that should be placed under:
+/etc/nginx
+
+To install:
+* Delete all files under /etc/nginx/sites-enabled
+* Either:
+ * Copy 'mctxconfig' (under sites-enabled) to /etc/nginx/sites-available/
+ and create a symlink to that file under /etc/nginx/sites-enabled/
+ * Create a symlink directly from 'mctxconfig' to
+ /etc/etc/nginx/sites-enabled/
+* Replace /etc/nginx/fastcgi_params and /etc/nginx/mime.types with the
+ provided files (either by copying or symlinking)
+
+Note:
+To get the login functionality working, you need to place a .htpasswd file
+under /usr/share/nginx/access (create folder if it doesn't exist). To generate
+the htpasswd file, install the apache2-utils package and use the 'htpasswd'
+executable.
+
+
+P.S: (I always forget these)
+Set file permissions to: 644
+Set folder permissions to: 755
\ No newline at end of file
--- /dev/null
+fastcgi_param QUERY_STRING $query_string;
+fastcgi_param REQUEST_METHOD $request_method;
+fastcgi_param CONTENT_TYPE $content_type;
+fastcgi_param CONTENT_LENGTH $content_length;
+
+fastcgi_param SCRIPT_FILENAME $request_filename;
+fastcgi_param SCRIPT_NAME $fastcgi_script_name;
+fastcgi_param REQUEST_URI $request_uri;
+fastcgi_param DOCUMENT_URI $document_uri;
+fastcgi_param DOCUMENT_ROOT $document_root;
+fastcgi_param SERVER_PROTOCOL $server_protocol;
+
+fastcgi_param GATEWAY_INTERFACE CGI/1.1;
+fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
+fastcgi_param SERVER_HOSTNAME mctxsoft;
+
+fastcgi_param REMOTE_ADDR $remote_addr;
+fastcgi_param REMOTE_PORT $remote_port;
+fastcgi_param REMOTE_USER $remote_user;
+fastcgi_param SERVER_ADDR $server_addr;
+fastcgi_param SERVER_PORT $server_port;
+fastcgi_param SERVER_NAME $server_name;
+
+fastcgi_param HTTPS $https;
+
+# PHP only, required if PHP was built with --enable-force-cgi-redirect
+fastcgi_param REDIRECT_STATUS 200;
--- /dev/null
+types {
+ text/html html htm shtml;
+ text/css css;
+ text/xml xml rss;
+ image/gif gif;
+ image/jpeg jpeg jpg;
+ application/x-javascript js;
+ application/atom+xml atom;
+
+ text/mathml mml;
+ text/plain log;
+ text/plain txt;
+ text/vnd.sun.j2me.app-descriptor jad;
+ text/vnd.wap.wml wml;
+ text/x-component htc;
+
+ image/png png;
+ image/tiff tif tiff;
+ image/vnd.wap.wbmp wbmp;
+ image/x-icon ico;
+ image/x-jng jng;
+ image/x-ms-bmp bmp;
+ image/svg+xml svg svgz;
+
+ application/java-archive jar war ear;
+ application/json json;
+ application/mac-binhex40 hqx;
+ application/msword doc;
+ application/pdf pdf;
+ application/postscript ps eps ai;
+ application/rtf rtf;
+ application/vnd.ms-excel xls;
+ application/vnd.ms-powerpoint ppt;
+ application/vnd.wap.wmlc wmlc;
+ application/vnd.google-earth.kml+xml kml;
+ application/vnd.google-earth.kmz kmz;
+ application/x-7z-compressed 7z;
+ application/x-cocoa cco;
+ application/x-java-archive-diff jardiff;
+ application/x-java-jnlp-file jnlp;
+ application/x-makeself run;
+ application/x-perl pl pm;
+ application/x-pilot prc pdb;
+ application/x-rar-compressed rar;
+ application/x-redhat-package-manager rpm;
+ application/x-sea sea;
+ application/x-shockwave-flash swf;
+ application/x-stuffit sit;
+ application/x-tcl tcl tk;
+ application/x-x509-ca-cert der pem crt;
+ application/x-xpinstall xpi;
+ application/xhtml+xml xhtml;
+ application/zip zip;
+
+ application/octet-stream bin exe dll;
+ application/octet-stream deb;
+ application/octet-stream dmg;
+ application/octet-stream eot;
+ application/octet-stream iso img;
+ application/octet-stream msi msp msm;
+ application/ogg ogx;
+
+ audio/midi mid midi kar;
+ audio/mpeg mpga mpega mp2 mp3 m4a;
+ audio/ogg oga ogg spx;
+ audio/x-realaudio ra;
+ audio/webm weba;
+
+ video/3gpp 3gpp 3gp;
+ video/mp4 mp4;
+ video/mpeg mpeg mpg mpe;
+ video/ogg ogv;
+ video/quicktime mov;
+ video/webm webm;
+ video/x-flv flv;
+ video/x-mng mng;
+ video/x-ms-asf asx asf;
+ video/x-ms-wmv wmv;
+ video/x-msvideo avi;
+}
--- /dev/null
+server {
+ listen 80;
+
+ #Change this to match your root directory
+ root /usr/share/nginx/html;
+ index index.php index.html index.htm;
+
+ # Make site accessible from http://localhost/
+ server_name localhost;
+
+ location / {
+ # First attempt to serve request as file, then
+ # as directory, then fall back to displaying a 404.
+ try_files $uri $uri/ =404;
+ # Uncomment to enable naxsi on this location
+ # include /etc/nginx/naxsi.rules
+ }
+
+ # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
+ #location /RequestDenied {
+ # proxy_pass http://127.0.0.1:8080;
+ #}
+
+ #error_page 404 /404.html;
+
+ # redirect server error pages to the static page /50x.html
+ #
+ #error_page 500 502 503 504 /50x.html;
+ #location = /50x.html {
+ # root /usr/share/nginx/html;
+ #}
+
+ # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
+ #
+ location ~ \.php$ {
+ fastcgi_split_path_info ^(.+\.php)(/.+)$;
+ # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
+ #
+ # # With php5-cgi alone:
+ # fastcgi_pass 127.0.0.1:9000;
+ # # With php5-fpm:
+ fastcgi_pass unix:/var/run/php5-fpm.sock;
+ fastcgi_index index.php;
+ include fastcgi_params;
+ }
+
+ # deny access to .htaccess files, if Apache's document root
+ # concurs with nginx's one
+ #
+ location ~ /\.ht {
+ deny all;
+ }
+
+ #MCTX API
+ location /api {
+ #Login area
+ location ^~ /api/control {
+ #Uncomment to add back login
+ #auth_basic "Restricted Access";
+ #auth_basic_user_file /usr/share/nginx/access/.htpasswd;
+
+ fastcgi_pass 127.0.0.1:9005;
+ fastcgi_param DOCUMENT_URI_LOCAL control;
+ include fastcgi_params;
+ }
+
+ #Program log
+ location ^~ /api/log {
+ alias /var/log/mctxserv.log;
+ default_type text/plain;
+ }
+
+ location ~ ^/api/?([^?]*) {
+ fastcgi_pass 127.0.0.1:9005;
+ fastcgi_param DOCUMENT_URI_LOCAL $1;
+ include fastcgi_params;
+ }
+ }
+}
+
+
+# another virtual host using mix of IP-, name-, and port-based configuration
+#
+#server {
+# listen 8000;
+# listen somename:8080;
+# server_name somename alias another.alias;
+# root html;
+# index index.html index.htm;
+#
+# location / {
+# try_files $uri $uri/ =404;
+# }
+#}
+
+
+# HTTPS server
+#
+#server {
+# listen 443;
+# server_name localhost;
+#
+# root html;
+# index index.html index.htm;
+#
+# ssl on;
+# ssl_certificate cert.pem;
+# ssl_certificate_key cert.key;
+#
+# ssl_session_timeout 5m;
+#
+# ssl_protocols SSLv3 TLSv1;
+# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
+# ssl_prefer_server_ciphers on;
+#
+# location / {
+# try_files $uri $uri/ =404;
+# }
+#}
--- /dev/null
+if $programname == 'mctxserv' then /var/log/mctxserv.log
*/
-#include <unistd.h>
-#include <stdarg.h>
-
// --- Custom headers --- //
#include "common.h"
#include "log.h"
#include "options.h"
-// --- Static variables --- //
-static const char * unspecified_funct = "???";
-
-// --- Function implementations --- //
+#include <unistd.h>
+#include <syslog.h>
+#include <stdarg.h>
-//TODO: Migrate to syslog (shouldn't be too hard; these functions basically do what syslog does)
-// Note that we will want to have a seperate log as well as syslog; give the user the option to view the log using the GUI
+static const char * unspecified_funct = "???";
/**
- * Print a message to stderr
+ * Print a message to stderr and log it via syslog. The message must be
+ * less than BUFSIZ characters long, or it will be truncated.
* @param level - Specify how severe the message is.
If level is higher (less urgent) than the program's verbosity (see options.h) no message will be printed
* @param funct - String indicating the function name from which this function was called.
*/
void LogEx(int level, const char * funct, ...)
{
+ //Todo: consider setlogmask(3) to filter messages
const char *fmt;
+ char buffer[BUFSIZ];
va_list va;
+
+ // Don't print the message unless we need to
+ if (level > g_options.verbosity)
+ return;
+
va_start(va, funct);
fmt = va_arg(va, const char*);
if (fmt == NULL) // sanity check
- FatalEx("Log", "Format string is NULL");
+ Fatal("Format string is NULL");
- // Don't print the message unless we need to
- if (level > g_options.verbosity)
- return;
+ vsnprintf(buffer, BUFSIZ, fmt, va);
+ va_end(va);
if (funct == NULL)
funct = unspecified_funct;
switch (level)
{
case LOGERR:
+ level = LOG_ERR;
severity = "ERROR";
break;
case LOGWARN:
+ level = LOG_WARNING;
severity = "WARNING";
break;
case LOGNOTE:
+ level = LOG_NOTICE;
severity = "NOTICE";
break;
case LOGINFO:
+ level = LOG_INFO;
severity = "INFO";
break;
default:
+ level = LOG_DEBUG;
severity = "DEBUG";
break;
}
- // Print: Program name, PID, severity string, function name first
- fprintf(stderr, "%s [%d] : %s : %s - ", g_options.program, getpid(), severity, funct);
-
- // Then pass additional arguments with the format string to vfprintf for printing
- vfprintf(stderr, fmt, va);
- va_end(va);
-
- // End log messages with a newline
- fprintf(stderr, "\n");
+ syslog(level, "%s: %s - %s", severity, funct, buffer);
}
/**
void FatalEx(const char * funct, ...)
{
const char *fmt;
+ char buffer[BUFSIZ];
va_list va;
va_start(va, funct);
fmt = va_arg(va, const char*);
{
// Fatal error in the Fatal function.
// (This really shouldn't happen unless someone does something insanely stupid)
- FatalEx("Fatal", "Format string is NULL");
+ Fatal("Format string is NULL");
return; // Should never get here
}
+ vsnprintf(buffer, BUFSIZ, fmt,va);
+ va_end(va);
+
if (funct == NULL)
funct = unspecified_funct;
- fprintf(stderr, "%s [%d] : %s : FATAL - ", g_options.program, getpid(), funct);
-
- vfprintf(stderr, fmt, va);
- va_end(va);
- fprintf(stderr, "\n");
-
+ syslog(LOG_CRIT, "FATAL: %s - %s", funct, buffer);
exit(EXIT_FAILURE);
}
#include "control.h"
// --- Standard headers --- //
+#include <syslog.h> // for system logging
#include <signal.h> // for signal handling
// --- Variable definitions --- //
{
ParseArguments(argc, argv);
+ //Open the system log
+ openlog("mctxserv", LOG_PID | LOG_PERROR, LOG_USER);
+ Log(LOGINFO, "Server started");
// signal handler
//TODO: Make this work
/*