diff --git a/Streetwriters.Common/Constants.cs b/Streetwriters.Common/Constants.cs
index 3f986a8..2c5f1c7 100644
--- a/Streetwriters.Common/Constants.cs
+++ b/Streetwriters.Common/Constants.cs
@@ -1,81 +1,81 @@
-/*
-This file is part of the Notesnook Sync Server project (https://notesnook.com/)
-
-Copyright (C) 2023 Streetwriters (Private) Limited
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the Affero GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-Affero GNU General Public License for more details.
-
-You should have received a copy of the Affero GNU General Public License
-along with this program. If not, see .
-*/
-
-using System;
-
-namespace Streetwriters.Common
-{
- public class Constants
- {
- public static int COMPATIBILITY_VERSION = 1;
- public static bool IS_SELF_HOSTED => Environment.GetEnvironmentVariable("SELF_HOSTED") == "1";
- public static bool DISABLE_ACCOUNT_CREATION => Environment.GetEnvironmentVariable("DISABLE_ACCOUNT_CREATION") == "1";
- public static string INSTANCE_NAME => Environment.GetEnvironmentVariable("INSTANCE_NAME") ?? "default";
-
- // S3 related
- public static string S3_ACCESS_KEY => Environment.GetEnvironmentVariable("S3_ACCESS_KEY");
- public static string S3_ACCESS_KEY_ID => Environment.GetEnvironmentVariable("S3_ACCESS_KEY_ID");
- public static string S3_SERVICE_URL => Environment.GetEnvironmentVariable("S3_SERVICE_URL");
- public static string S3_REGION => Environment.GetEnvironmentVariable("S3_REGION");
- public static string S3_BUCKET_NAME => Environment.GetEnvironmentVariable("S3_BUCKET_NAME");
- public static string S3_INTERNAL_BUCKET_NAME => Environment.GetEnvironmentVariable("S3_INTERNAL_BUCKET_NAME");
- public static string S3_INTERNAL_SERVICE_URL => Environment.GetEnvironmentVariable("S3_INTERNAL_SERVICE_URL");
-
- // SMTP settings
- public static string SMTP_USERNAME => Environment.GetEnvironmentVariable("SMTP_USERNAME");
- public static string SMTP_PASSWORD => Environment.GetEnvironmentVariable("SMTP_PASSWORD");
- public static string SMTP_HOST => Environment.GetEnvironmentVariable("SMTP_HOST");
- public static string SMTP_PORT => Environment.GetEnvironmentVariable("SMTP_PORT");
- public static string SMTP_REPLYTO_EMAIL => Environment.GetEnvironmentVariable("SMTP_REPLYTO_EMAIL");
- public static string NOTESNOOK_SENDER_EMAIL => Environment.GetEnvironmentVariable("NOTESNOOK_SENDER_EMAIL") ?? Environment.GetEnvironmentVariable("SMTP_USERNAME");
-
- public static string NOTESNOOK_APP_HOST => Environment.GetEnvironmentVariable("NOTESNOOK_APP_HOST");
- public static string NOTESNOOK_API_SECRET => Environment.GetEnvironmentVariable("NOTESNOOK_API_SECRET");
-
- // MessageBird is used for SMS sending
- public static string TWILIO_ACCOUNT_SID => Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID");
- public static string TWILIO_AUTH_TOKEN => Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN");
- public static string TWILIO_SERVICE_SID => Environment.GetEnvironmentVariable("TWILIO_SERVICE_SID");
- // Server discovery
- public static int NOTESNOOK_SERVER_PORT => int.Parse(Environment.GetEnvironmentVariable("NOTESNOOK_SERVER_PORT") ?? "80");
- public static string NOTESNOOK_SERVER_HOST => Environment.GetEnvironmentVariable("NOTESNOOK_SERVER_HOST");
- public static string NOTESNOOK_CERT_PATH => Environment.GetEnvironmentVariable("NOTESNOOK_CERT_PATH");
- public static string NOTESNOOK_CERT_KEY_PATH => Environment.GetEnvironmentVariable("NOTESNOOK_CERT_KEY_PATH");
-
- public static int IDENTITY_SERVER_PORT => int.Parse(Environment.GetEnvironmentVariable("IDENTITY_SERVER_PORT") ?? "80");
- public static string IDENTITY_SERVER_HOST => Environment.GetEnvironmentVariable("IDENTITY_SERVER_HOST");
- public static string IDENTITY_SERVER_DOMAIN => Environment.GetEnvironmentVariable("IDENTITY_SERVER_DOMAIN");
- public static string IDENTITY_CERT_PATH => Environment.GetEnvironmentVariable("IDENTITY_CERT_PATH");
- public static string IDENTITY_CERT_KEY_PATH => Environment.GetEnvironmentVariable("IDENTITY_CERT_KEY_PATH");
-
- public static int SSE_SERVER_PORT => int.Parse(Environment.GetEnvironmentVariable("SSE_SERVER_PORT") ?? "80");
- public static string SSE_SERVER_HOST => Environment.GetEnvironmentVariable("SSE_SERVER_HOST");
- public static string SSE_CERT_PATH => Environment.GetEnvironmentVariable("SSE_CERT_PATH");
- public static string SSE_CERT_KEY_PATH => Environment.GetEnvironmentVariable("SSE_CERT_KEY_PATH");
-
- // internal
- public static string MONGODB_CONNECTION_STRING => Environment.GetEnvironmentVariable("MONGODB_CONNECTION_STRING");
- public static string MONGODB_DATABASE_NAME => Environment.GetEnvironmentVariable("MONGODB_DATABASE_NAME");
- public static int SUBSCRIPTIONS_SERVER_PORT => int.Parse(Environment.GetEnvironmentVariable("SUBSCRIPTIONS_SERVER_PORT") ?? "80");
- public static string SUBSCRIPTIONS_SERVER_HOST => Environment.GetEnvironmentVariable("SUBSCRIPTIONS_SERVER_HOST");
- public static string SUBSCRIPTIONS_CERT_PATH => Environment.GetEnvironmentVariable("SUBSCRIPTIONS_CERT_PATH");
- public static string SUBSCRIPTIONS_CERT_KEY_PATH => Environment.GetEnvironmentVariable("SUBSCRIPTIONS_CERT_KEY_PATH");
- public static string[] NOTESNOOK_CORS_ORIGINS => Environment.GetEnvironmentVariable("NOTESNOOK_CORS")?.Split(",") ?? new string[] { };
- }
+/*
+This file is part of the Notesnook Sync Server project (https://notesnook.com/)
+
+Copyright (C) 2023 Streetwriters (Private) Limited
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the Affero GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+Affero GNU General Public License for more details.
+
+You should have received a copy of the Affero GNU General Public License
+along with this program. If not, see .
+*/
+
+using System;
+
+namespace Streetwriters.Common
+{
+ public class Constants
+ {
+ public static int COMPATIBILITY_VERSION = 1;
+ public static bool IS_SELF_HOSTED => Environment.GetEnvironmentVariable("SELF_HOSTED") == "1";
+ public static bool DISABLE_ACCOUNT_CREATION => Environment.GetEnvironmentVariable("DISABLE_ACCOUNT_CREATION") == "1";
+ public static string INSTANCE_NAME => Environment.GetEnvironmentVariable("INSTANCE_NAME") ?? "default";
+
+ // S3 related
+ public static string S3_ACCESS_KEY => Environment.GetEnvironmentVariable("S3_ACCESS_KEY");
+ public static string S3_ACCESS_KEY_ID => Environment.GetEnvironmentVariable("S3_ACCESS_KEY_ID");
+ public static string S3_SERVICE_URL => Environment.GetEnvironmentVariable("S3_SERVICE_URL");
+ public static string S3_REGION => Environment.GetEnvironmentVariable("S3_REGION");
+ public static string S3_BUCKET_NAME => Environment.GetEnvironmentVariable("S3_BUCKET_NAME");
+ public static string S3_INTERNAL_BUCKET_NAME => Environment.GetEnvironmentVariable("S3_INTERNAL_BUCKET_NAME");
+ public static string S3_INTERNAL_SERVICE_URL => Environment.GetEnvironmentVariable("S3_INTERNAL_SERVICE_URL");
+
+ // SMTP settings
+ public static string SMTP_USERNAME => Environment.GetEnvironmentVariable("SMTP_USERNAME");
+ public static string SMTP_PASSWORD => Environment.GetEnvironmentVariable("SMTP_PASSWORD");
+ public static string SMTP_HOST => Environment.GetEnvironmentVariable("SMTP_HOST");
+ public static string SMTP_PORT => Environment.GetEnvironmentVariable("SMTP_PORT");
+ public static string SMTP_REPLYTO_EMAIL => Environment.GetEnvironmentVariable("SMTP_REPLYTO_EMAIL");
+ public static string NOTESNOOK_SENDER_EMAIL => Environment.GetEnvironmentVariable("NOTESNOOK_SENDER_EMAIL") ?? Environment.GetEnvironmentVariable("SMTP_USERNAME");
+
+ public static string NOTESNOOK_APP_HOST => Environment.GetEnvironmentVariable("NOTESNOOK_APP_HOST");
+ public static string NOTESNOOK_API_SECRET => Environment.GetEnvironmentVariable("NOTESNOOK_API_SECRET");
+
+ // MessageBird is used for SMS sending
+ public static string TWILIO_ACCOUNT_SID => Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID");
+ public static string TWILIO_AUTH_TOKEN => Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN");
+ public static string TWILIO_SERVICE_SID => Environment.GetEnvironmentVariable("TWILIO_SERVICE_SID");
+ // Server discovery
+ public static int NOTESNOOK_SERVER_PORT => int.Parse(Environment.GetEnvironmentVariable("NOTESNOOK_SERVER_PORT") ?? "80");
+ public static string NOTESNOOK_SERVER_HOST => Environment.GetEnvironmentVariable("NOTESNOOK_SERVER_HOST");
+ public static string NOTESNOOK_CERT_PATH => Environment.GetEnvironmentVariable("NOTESNOOK_CERT_PATH");
+ public static string NOTESNOOK_CERT_KEY_PATH => Environment.GetEnvironmentVariable("NOTESNOOK_CERT_KEY_PATH");
+
+ public static int IDENTITY_SERVER_PORT => int.Parse(Environment.GetEnvironmentVariable("IDENTITY_SERVER_PORT") ?? "80");
+ public static string IDENTITY_SERVER_HOST => Environment.GetEnvironmentVariable("IDENTITY_SERVER_HOST");
+ public static Uri IDENTITY_SERVER_URL => new(Environment.GetEnvironmentVariable("IDENTITY_SERVER_URL"));
+ public static string IDENTITY_CERT_PATH => Environment.GetEnvironmentVariable("IDENTITY_CERT_PATH");
+ public static string IDENTITY_CERT_KEY_PATH => Environment.GetEnvironmentVariable("IDENTITY_CERT_KEY_PATH");
+
+ public static int SSE_SERVER_PORT => int.Parse(Environment.GetEnvironmentVariable("SSE_SERVER_PORT") ?? "80");
+ public static string SSE_SERVER_HOST => Environment.GetEnvironmentVariable("SSE_SERVER_HOST");
+ public static string SSE_CERT_PATH => Environment.GetEnvironmentVariable("SSE_CERT_PATH");
+ public static string SSE_CERT_KEY_PATH => Environment.GetEnvironmentVariable("SSE_CERT_KEY_PATH");
+
+ // internal
+ public static string MONGODB_CONNECTION_STRING => Environment.GetEnvironmentVariable("MONGODB_CONNECTION_STRING");
+ public static string MONGODB_DATABASE_NAME => Environment.GetEnvironmentVariable("MONGODB_DATABASE_NAME");
+ public static int SUBSCRIPTIONS_SERVER_PORT => int.Parse(Environment.GetEnvironmentVariable("SUBSCRIPTIONS_SERVER_PORT") ?? "80");
+ public static string SUBSCRIPTIONS_SERVER_HOST => Environment.GetEnvironmentVariable("SUBSCRIPTIONS_SERVER_HOST");
+ public static string SUBSCRIPTIONS_CERT_PATH => Environment.GetEnvironmentVariable("SUBSCRIPTIONS_CERT_PATH");
+ public static string SUBSCRIPTIONS_CERT_KEY_PATH => Environment.GetEnvironmentVariable("SUBSCRIPTIONS_CERT_KEY_PATH");
+ public static string[] NOTESNOOK_CORS_ORIGINS => Environment.GetEnvironmentVariable("NOTESNOOK_CORS")?.Split(",") ?? new string[] { };
+ }
}
\ No newline at end of file
diff --git a/Streetwriters.Common/Servers.cs b/Streetwriters.Common/Servers.cs
index d81b16b..afd320c 100644
--- a/Streetwriters.Common/Servers.cs
+++ b/Streetwriters.Common/Servers.cs
@@ -1,122 +1,122 @@
-/*
-This file is part of the Notesnook Sync Server project (https://notesnook.com/)
-
-Copyright (C) 2023 Streetwriters (Private) Limited
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the Affero GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-Affero GNU General Public License for more details.
-
-You should have received a copy of the Affero GNU General Public License
-along with this program. If not, see .
-*/
-
-using System.Net.NetworkInformation;
-using System.Net.Sockets;
-using System.Security.Cryptography.X509Certificates;
-#if !DEBUG
-using System;
-using System.Security.Cryptography.X509Certificates;
-#endif
-
-namespace Streetwriters.Common
-{
- public class Server
- {
- public Server(string originCertPath = null, string originCertKeyPath = null)
- {
- if (!string.IsNullOrEmpty(originCertPath) && !string.IsNullOrEmpty(originCertKeyPath))
- this.SSLCertificate = X509Certificate2.CreateFromPemFile(originCertPath, originCertKeyPath);
- }
- public string Id { get; set; }
- public int Port { get; set; }
- public string Hostname { get; set; }
- public string Domain { get; set; }
- public X509Certificate2 SSLCertificate { get; }
- public bool IsSecure { get => this.SSLCertificate != null; }
-
- public override string ToString()
- {
- var url = "";
- url += "http";
- url += $"://{Hostname}";
- url += Port == 80 || Port == 443 ? "" : $":{Port}";
- return url;
- }
-
- public string WS()
- {
- var url = "";
- url += IsSecure ? "ws" : "ws";
- url += $"://{Hostname}";
- url += Port == 80 ? "" : $":{Port}";
- return url;
- }
- }
-
- public class Servers
- {
-#if DEBUG
- public static string GetLocalIPv4()
- {
- var interfaces = NetworkInterface.GetAllNetworkInterfaces();
- string output = "";
- foreach (NetworkInterface item in interfaces)
- {
- if ((item.NetworkInterfaceType == NetworkInterfaceType.Ethernet || item.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) && item.OperationalStatus == OperationalStatus.Up)
- {
- foreach (UnicastIPAddressInformation ip in item.GetIPProperties().UnicastAddresses)
- {
- if (ip.Address.AddressFamily == AddressFamily.InterNetwork)
- {
- output = ip.Address.ToString();
- }
- }
- }
- }
- return output;
- }
- public readonly static string HOST = GetLocalIPv4();
- public static Server S3Server { get; } = new()
- {
- Port = 4568,
- Hostname = HOST,
- Domain = HOST
- };
-#endif
- public static Server NotesnookAPI { get; } = new(Constants.NOTESNOOK_CERT_PATH, Constants.NOTESNOOK_CERT_KEY_PATH)
- {
- Port = Constants.NOTESNOOK_SERVER_PORT,
- Hostname = Constants.NOTESNOOK_SERVER_HOST,
- Id = "notesnook-sync"
- };
-
- public static Server MessengerServer { get; } = new(Constants.SSE_CERT_PATH, Constants.SSE_CERT_KEY_PATH)
- {
- Port = Constants.SSE_SERVER_PORT,
- Hostname = Constants.SSE_SERVER_HOST,
- Id = "sse"
- };
-
- public static Server IdentityServer { get; } = new(Constants.IDENTITY_CERT_PATH, Constants.IDENTITY_CERT_KEY_PATH)
- {
- Domain = Constants.IDENTITY_SERVER_DOMAIN,
- Port = Constants.IDENTITY_SERVER_PORT,
- Hostname = Constants.IDENTITY_SERVER_HOST,
- Id = "auth"
- };
-
- public static Server SubscriptionServer { get; } = new(Constants.SUBSCRIPTIONS_CERT_PATH, Constants.SUBSCRIPTIONS_CERT_KEY_PATH)
- {
- Port = Constants.SUBSCRIPTIONS_SERVER_PORT,
- Hostname = Constants.SUBSCRIPTIONS_SERVER_HOST,
- Id = "subscription"
- };
- }
-}
+/*
+This file is part of the Notesnook Sync Server project (https://notesnook.com/)
+
+Copyright (C) 2023 Streetwriters (Private) Limited
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the Affero GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+Affero GNU General Public License for more details.
+
+You should have received a copy of the Affero GNU General Public License
+along with this program. If not, see .
+*/
+
+using System;
+using System.Net.NetworkInformation;
+using System.Net.Sockets;
+using System.Security.Cryptography.X509Certificates;
+#if !DEBUG
+using System;
+using System.Security.Cryptography.X509Certificates;
+#endif
+
+namespace Streetwriters.Common
+{
+ public class Server
+ {
+ public Server(string originCertPath = null, string originCertKeyPath = null)
+ {
+ if (!string.IsNullOrEmpty(originCertPath) && !string.IsNullOrEmpty(originCertKeyPath))
+ this.SSLCertificate = X509Certificate2.CreateFromPemFile(originCertPath, originCertKeyPath);
+ }
+ public string Id { get; set; }
+ public int Port { get; set; }
+ public string Hostname { get; set; }
+ public Uri PublicURL { get; set; }
+ public X509Certificate2 SSLCertificate { get; }
+ public bool IsSecure { get => this.SSLCertificate != null; }
+
+ public override string ToString()
+ {
+ var url = "";
+ url += "http";
+ url += $"://{Hostname}";
+ url += Port == 80 || Port == 443 ? "" : $":{Port}";
+ return url;
+ }
+
+ public string WS()
+ {
+ var url = "";
+ url += IsSecure ? "ws" : "ws";
+ url += $"://{Hostname}";
+ url += Port == 80 ? "" : $":{Port}";
+ return url;
+ }
+ }
+
+ public class Servers
+ {
+#if DEBUG
+ public static string GetLocalIPv4()
+ {
+ var interfaces = NetworkInterface.GetAllNetworkInterfaces();
+ string output = "";
+ foreach (NetworkInterface item in interfaces)
+ {
+ if ((item.NetworkInterfaceType == NetworkInterfaceType.Ethernet || item.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) && item.OperationalStatus == OperationalStatus.Up)
+ {
+ foreach (UnicastIPAddressInformation ip in item.GetIPProperties().UnicastAddresses)
+ {
+ if (ip.Address.AddressFamily == AddressFamily.InterNetwork)
+ {
+ output = ip.Address.ToString();
+ }
+ }
+ }
+ }
+ return output;
+ }
+ public readonly static string HOST = GetLocalIPv4();
+ public static Server S3Server { get; } = new()
+ {
+ Port = 4568,
+ Hostname = HOST
+ };
+#endif
+ public static Server NotesnookAPI { get; } = new(Constants.NOTESNOOK_CERT_PATH, Constants.NOTESNOOK_CERT_KEY_PATH)
+ {
+ Port = Constants.NOTESNOOK_SERVER_PORT,
+ Hostname = Constants.NOTESNOOK_SERVER_HOST,
+ Id = "notesnook-sync"
+ };
+
+ public static Server MessengerServer { get; } = new(Constants.SSE_CERT_PATH, Constants.SSE_CERT_KEY_PATH)
+ {
+ Port = Constants.SSE_SERVER_PORT,
+ Hostname = Constants.SSE_SERVER_HOST,
+ Id = "sse"
+ };
+
+ public static Server IdentityServer { get; } = new(Constants.IDENTITY_CERT_PATH, Constants.IDENTITY_CERT_KEY_PATH)
+ {
+ PublicURL = Constants.IDENTITY_SERVER_URL,
+ Port = Constants.IDENTITY_SERVER_PORT,
+ Hostname = Constants.IDENTITY_SERVER_HOST,
+ Id = "auth"
+ };
+
+ public static Server SubscriptionServer { get; } = new(Constants.SUBSCRIPTIONS_CERT_PATH, Constants.SUBSCRIPTIONS_CERT_KEY_PATH)
+ {
+ Port = Constants.SUBSCRIPTIONS_SERVER_PORT,
+ Hostname = Constants.SUBSCRIPTIONS_SERVER_HOST,
+ Id = "subscription"
+ };
+ }
+}