support: remove createTicket

there is no form to create tickets anymore since a while
This commit is contained in:
Girish Ramakrishnan
2025-06-06 09:51:07 +02:00
parent 28a1c254d9
commit 2c2a24c31b
3 changed files with 3 additions and 83 deletions

View File

@@ -24,31 +24,23 @@ exports = module.exports = {
getAppUpdate,
getBoxUpdate,
createTicket,
// exported for tests
_setApiServerOrigin: setApiServerOrigin,
_unregister: unregister
};
const apps = require('./apps.js'),
assert = require('assert'),
const assert = require('assert'),
BoxError = require('./boxerror.js'),
constants = require('./constants.js'),
dashboard = require('./dashboard.js'),
debug = require('debug')('box:appstore'),
eventlog = require('./eventlog.js'),
manifestFormat = require('cloudron-manifestformat'),
network = require('./network.js'),
path = require('path'),
paths = require('./paths.js'),
promiseRetry = require('./promise-retry.js'),
safe = require('safetydance'),
semver = require('semver'),
settings = require('./settings.js'),
shell = require('./shell.js')('appstore'),
superagent = require('./superagent.js'),
support = require('./support.js');
superagent = require('./superagent.js');
// These are the default options and will be adjusted once a subscription state is obtained
// Keep in sync with appstore/routes/cloudrons.js
@@ -344,54 +336,6 @@ async function unregister() {
await settings.set(settings.APPSTORE_API_TOKEN_KEY, '');
}
async function createTicket(info, auditSource) {
assert.strictEqual(typeof info, 'object');
assert.strictEqual(typeof info.email, 'string');
assert.strictEqual(typeof info.displayName, 'string');
assert.strictEqual(typeof info.type, 'string');
assert.strictEqual(typeof info.subject, 'string');
assert.strictEqual(typeof info.description, 'string');
assert.strictEqual(typeof auditSource, 'object');
const token = await settings.get(settings.APPSTORE_API_TOKEN_KEY);
if (!token) throw new BoxError(BoxError.LICENSE_ERROR, 'Missing token');
if (info.enableSshSupport) {
await safe(support.enableRemoteSupport(true, auditSource));
info.ipv4 = await network.getIPv4();
}
info.app = info.appId ? await apps.get(info.appId) : null;
info.supportEmail = constants.SUPPORT_EMAIL; // destination address for tickets
const request = superagent.post(`${await getApiServerOrigin()}/api/v1/ticket`)
.query({ accessToken: token })
.timeout(60 * 1000)
.ok(() => true);
// either send as JSON through body or as multipart, depending on attachments
if (info.app) {
request.field('infoJSON', JSON.stringify(info));
const logPaths = await apps.getLogPaths(info.app);
for (const logPath of logPaths) {
const [error, logs] = await safe(shell.spawn('tail', ['--lines=1000', logPath], { encoding: 'utf8' }));
if (!error && logs) request.attach(path.basename(logPath), logs, path.basename(logPath));
}
} else {
request.send(info);
}
const [error, response] = await safe(request);
if (error) throw new BoxError(BoxError.NETWORK_ERROR, error);
if (response.status === 401) throw new BoxError(BoxError.INVALID_CREDENTIALS, 'Invalid appstore token');
if (response.status !== 201) throw new BoxError(BoxError.EXTERNAL_ERROR, `Bad response: ${response.status} ${response.text}`);
await eventlog.add(eventlog.ACTION_SUPPORT_TICKET, auditSource, info);
return { message: `An email was sent to ${constants.SUPPORT_EMAIL}. We will get back shortly!` };
}
async function downloadManifest(appStoreId, manifest) {
if (!appStoreId && !manifest) throw new BoxError(BoxError.BAD_FIELD, 'Neither manifest nor appStoreId provided');