Upgrade 1.4.0 - 1.5.0
In this version, there is break changes happened because OpenSSO now support webhook for broadcasting/event streaming which is many things are changed and there is some new files added. Just replace it, will be more easier, but if you have already modified OpenSSO code by yourself, then you should consider about these files:
root
├── models/
│ └── log_webhook.js
├── routes/
│ └── log_webhook.js
├── schemas/
│ └── log_webhook.js
├── views/
│ └── default/
│ └── backend/
│ ├── data_sso_log_webhook.html
│ └── my_sso_log_webhook.html
├── views/
│ └── inverse/
│ └── backend/
│ ├── data_sso_log_webhook.html
│ └── my_sso_log_webhook.html
.
root
├── database/
│ ├── data_default.sqlite3
│ ├── data.sqlite3
│ ├── db.mysql.sql
│ ├── db.postgre.sql
│ └── db.sql
├── lib/
│ └── helper.js
├── models/
│ └── data_sso.js
├── plugins/
│ └── fastify-reply-handler.js
├── public/
│ └── assets/
│ └── default/
│ └── js/
│ ├── argon-dashboard.js
│ └── argon-dashboard.min.js
├── public/
│ └── assets/
│ └── inverse/
│ └── js/
│ ├── argon-dashboard.js
│ └── argon-dashboard.min.js
├── routes/
│ ├── data_sso.js
│ ├── oauth.js
│ ├── page-internal.js
│ ├── page.js
│ └── user.js
├── schemas/
│ ├── data_sso.js
│ └── user.js
├── test/
│ └── helper.js
├── views/
│ └── default/
│ ├── backend/
│ │ ├── _global_js_.html
│ │ ├── data_sso.html
│ │ ├── data_user.html
│ │ ├── example_data.html
│ │ └── my_sso.html
│ ├── _global_js.html
│ ├── contact.html
│ ├── forgot-password.html
│ ├── sign-in.html
│ ├── sign-up.html
│ └── sso-login.html
├── views/
│ └── inverse/
│ ├── backend/
│ │ ├── _global_js_.html
│ │ ├── data_sso.html
│ │ ├── data_user.html
│ │ ├── example_data.html
│ │ └── my_sso.html
│ ├── _global_js.html
│ ├── contact.html
│ ├── forgot-password.html
│ ├── sign-in.html
│ ├── sign-up.html
│ └── sso-login.html
├── changelog.md
├── config.default.js
├── config.js
├── docker-compose.yml
├── package-lock.json
├── package.json
├── postman_collection.json
├── server.js
.
How to manually Upgrade ?
Please attention, in this upgrade, there is a lot of break changes. So you need to be more carefully to follow this upgrade steps.
Please Remember to always backup before doing any upgrades.
To increase the successful possibilty when doing upgrading, always try on your local computer first.
1. Update database structure
You have to execute this SQL query below, only once. Choose what database you're using.
ALTER TABLE data_ssos ADD COLUMN mode_strict INT DEFAULT 0;
ALTER TABLE data_ssos ADD COLUMN whitelist TEXT;
ALTER TABLE data_ssos ADD COLUMN webhook_url TEXT;
DROP TABLE IF EXISTS `log_webhooks`;
CREATE TABLE `log_webhooks` (
`event_id` varchar(100) NOT NULL,
`event_key` varchar(100) NOT NULL,
`event_type` varchar(100) DEFAULT NULL,
`event_name` varchar(100) DEFAULT NULL,
`event_owner` varchar(64) DEFAULT NULL,
`event_data` text,
`created_at` bigint(13) DEFAULT NULL,
`created_at_month` varchar(100) DEFAULT NULL,
`created_at_year` int(11) DEFAULT NULL,
`endpoint` text,
"http_status" int(11) DEFAULT NULL,
"http_response" text,
PRIMARY KEY (`event_id`),
KEY `index_log_webhooks` (`event_key`,`event_owner`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE data_ssos ADD COLUMN mode_strict INT DEFAULT 0;
ALTER TABLE data_ssos ADD COLUMN whitelist TEXT DEFAULT '[]';
ALTER TABLE data_ssos ADD COLUMN webhook_url TEXT DEFAULT '';
DROP TABLE IF EXISTS log_webhooks;
CREATE TABLE log_webhooks (
event_id varchar(100) NOT NULL,
event_key varchar(100) NOT NULL,
event_type varchar(100) DEFAULT NULL,
event_name varchar(100) DEFAULT NULL,
event_owner varchar(64) DEFAULT NULL,
event_data text,
created_at bigint DEFAULT NULL,
created_at_month varchar(100) DEFAULT NULL,
created_at_year int DEFAULT NULL,
endpoint text,
http_status int DEFAULT NULL,
http_response text,
PRIMARY KEY (event_id)
);
CREATE INDEX index_log_webhooks ON log_webhooks (event_key, event_owner);
ALTER TABLE data_ssos ADD COLUMN mode_strict INTEGER DEFAULT 0;
ALTER TABLE data_ssos ADD COLUMN whitelist TEXT DEFAULT '[]';
ALTER TABLE data_ssos ADD COLUMN webhook_url TEXT DEFAULT '';
CREATE TABLE IF NOT EXISTS "log_webhooks" (
"event_id" TEXT,
"event_key" TEXT,
"event_type" TEXT,
"event_name" TEXT,
"event_owner" TEXT,
"event_data" TEXT,
"created_at" INTEGER,
"created_at_month" TEXT,
"created_at_year" INTEGER,
"endpoint" TEXT,
"http_status" INTEGER,
"http_response" TEXT
);
CREATE INDEX IF NOT EXISTS "index_log_webhooks" ON "log_webhooks" (
"event_key",
"event_owner"
);
2. Modify your config.js
Add trustProxy
configuration at line 8 of your config.js
.
Its located after logger
.
{
// ...
logger: true, // Server Log (default is true)
trustProxy: false, // Server will trust proxy (default is false)
// ...
}
module.exports = config
3. Modify file server.js
// ...
const config = require('./config.js')
const cluster = require('cluster')
const helper = require('./lib/helper.js')
const numCPUs = require('os').cpus().length
const htmlMinifier = require('html-minifier-terser')
const server = require('fastify')({
logger: config.logger,
trustProxy: helper.getConfig('trustProxy', false),
maxParamLength: config.maxParamLength
})
// ...
// Cors
server.register(require('@fastify/cors'), {
origin: '*',
methods: 'GET, HEAD, PUT, PATCH, POST, DELETE, OPTIONS',
allowedHeaders: 'Content-Type, Authorization, X-Requested-With, Etag, X-Token, X-Email-OTP, X-GA-OTP, Access-Key, Access-Token'
})
//...
- Add
const helper = require('./lib/helper.js')
- Add
trustProxy: helper.getConfig('trustProxy', false),
- Add
Access-Key
andAccess-Token
. - Then save it.
4. Replace the old package-lock.json
and package.json
.
Just replace it with newer file from this version.
5. Delete current node_modules
directory.
npm install
It will automatically installing the new package and dependencies.
6. Done
Now you can try to run the OpenSSO application.
node server.js
or
npm start