51ba7c8628
* Add DocEditor service Update windows installation project on develop * Add ASC.Login service * Delete onlyoffice-login.conf * Add json configs substitutions * Edit StartMigrationRunner custom action * Set service run as NT AUTHORITY\LocalService * Move config file substitutions to project * Remove condition to SetMACHINEKEY * Revert "Set service run as NT AUTHORITY\LocalService" This reverts commit 3e9c578a652e38f346f7e7fd52eca4ab72dcf537. * Fix nginx conf substitution * Add Local Service permitions * Add folders permitions Move node.js service logs * Fix * Edit logpath
123 lines
5.1 KiB
C#
123 lines
5.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Web;
|
|
using System.Net.Sockets;
|
|
using Microsoft.Deployment.WindowsInstaller;
|
|
using RabbitMQ.Client;
|
|
|
|
namespace Utils
|
|
{
|
|
public class CustomActions
|
|
{
|
|
public static string CreateAuthToken(string pkey, string machinekey)
|
|
{
|
|
using (var hasher = new System.Security.Cryptography.HMACSHA1(Encoding.UTF8.GetBytes(machinekey)))
|
|
{
|
|
var now = DateTime.UtcNow.ToString("yyyyMMddHHmmss");
|
|
var hash = System.Web.HttpServerUtility.UrlTokenEncode(hasher.ComputeHash(Encoding.UTF8.GetBytes(string.Join("\n", now, pkey))));
|
|
return string.Format("ASC {0}:{1}:{2}", pkey, now, hash);
|
|
}
|
|
}
|
|
|
|
[CustomAction]
|
|
public static ActionResult SetVersionReleaseDateSign(Session session)
|
|
{
|
|
var pkey = Convert.ToString(session["VERSION.RELEASE_DATE"]);
|
|
var machineKey = Convert.ToString(session["MACHINE_KEY"]);
|
|
|
|
session.Log("SetVersionReleaseDateSign: pkey {0}, machineKey {1}", pkey, machineKey);
|
|
|
|
session["VERSION.RELEASE_DATE.SIGN"] = CreateAuthToken(pkey, machineKey);
|
|
|
|
session.Log("SetVersionReleaseDateSign End: {0}", session["VERSION.RELEASE_DATE.SIGN"]);
|
|
|
|
return ActionResult.Success;
|
|
}
|
|
|
|
|
|
[CustomAction]
|
|
public static ActionResult TestRedisServerConnection(Session session)
|
|
{
|
|
try
|
|
{
|
|
using (var redis = new Redis(session["REDIS_HOST_PROP"], Convert.ToInt32(session["REDIS_PORT_PROP"])))
|
|
{
|
|
|
|
if (!String.IsNullOrEmpty(session["REDIS_PASSWORD_PROP"].Trim()))
|
|
redis.Password = session["REDIS_PASSWORD_PROP"];
|
|
|
|
var pong = redis.Ping("ONLYOFFICE");
|
|
|
|
session.Log("Redis Status: IsConnected is {0}", !String.IsNullOrEmpty(pong));
|
|
session["RedisServerConnectionError"] = !String.IsNullOrEmpty(pong) ? "" : String.Format("Connection Refused HOST:{0},PORT:{1},PASS:{2}", session["REDIS_HOST_PROP"], session["REDIS_PORT_PROP"], session["REDIS_PASSWORD_PROP"]);
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
session.Log("RedisConnectionException '{0}'", ex.Message);
|
|
session["RedisServerConnectionError"] = String.Format("Connection Refused HOST:{0},PORT:{1},PASS:{2}", session["REDIS_HOST_PROP"], session["REDIS_PORT_PROP"], session["REDIS_PASSWORD_PROP"]);
|
|
}
|
|
|
|
return ActionResult.Success;
|
|
}
|
|
|
|
|
|
[CustomAction]
|
|
public static ActionResult TestRabbitMQConnection(Session session)
|
|
{
|
|
ConnectionFactory factory = new ConnectionFactory();
|
|
|
|
factory.HostName = session["RABBITMQ_HOSTNAME_PROP"];
|
|
factory.Port = Convert.ToInt32(session["RABBITMQ_PORT_PROP"]);
|
|
factory.VirtualHost = session["RABBITMQ_VIRTUALHOST_PROP"];
|
|
factory.UserName = session["RABBITMQ_USERNAME_PROP"];
|
|
factory.Password = session["RABBITMQ_PASSWORD_PROP"];
|
|
|
|
try
|
|
{
|
|
using (IConnection conn = factory.CreateConnection())
|
|
{
|
|
session.Log("RabbitMQ Status: IsConnected is {0}", conn.IsOpen);
|
|
|
|
session["RabbitMQServerConnectionError"] = conn.IsOpen ? "" : String.Format("Connection Refused HOST:{0}, PORT:{1}, VirtualHost:{2}, UserName:{3}, PASS:{4}",
|
|
session["RABBITMQ_HOSTNAME_PROP"],
|
|
session["RABBITMQ_PORT_PROP"],
|
|
session["RABBITMQ_VIRTUALHOST_PROP"],
|
|
session["RABBITMQ_USERNAME_PROP"],
|
|
session["RABBITMQ_PASSWORD_PROP"]
|
|
);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
session.Log("RabbitMQ.Client.Exceptions.BrokerUnreachableException {0}", ex.Message);
|
|
session["RabbitMQServerConnectionError"] = String.Format("Connection Refused HOST:{0}, PORT:{1}, VirtualHost:{2}, UserName:{3}, PASS:{4}",
|
|
session["RABBITMQ_HOSTNAME_PROP"],
|
|
session["RABBITMQ_PORT_PROP"],
|
|
session["RABBITMQ_VIRTUALHOST_PROP"],
|
|
session["RABBITMQ_USERNAME_PROP"],
|
|
session["RABBITMQ_PASSWORD_PROP"]
|
|
);
|
|
|
|
}
|
|
|
|
return ActionResult.Success;
|
|
|
|
}
|
|
|
|
[CustomAction]
|
|
public static ActionResult CheckTCPAvailability(Session session)
|
|
{
|
|
string HOST = session.CustomActionData["HOST"];
|
|
string PORT = session.CustomActionData["PORT"];
|
|
string OUTPUT = session.CustomActionData["OUTPUT"];
|
|
var success = new TcpClient().BeginConnect(HOST, Convert.ToInt32(PORT), null, null).AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(1));
|
|
session[OUTPUT] = success.ToString();
|
|
return ActionResult.Success;
|
|
}
|
|
}
|
|
}
|