secubox-openwrt/package/secubox/luci-app-gitea/htdocs/luci-static/resources/gitea/api.js
CyberMind-FR d43a02a397 feat(gitea): Add self-hosted Git platform for OpenWrt
Add secubox-app-gitea and luci-app-gitea packages:

secubox-app-gitea:
- LXC container with Alpine 3.21 rootfs
- Gitea 1.22.6 binary (auto-detect amd64/arm64/armv7)
- HTTP (3000) and SSH (2222) ports
- SQLite database (embedded)
- giteactl: install/uninstall/update/backup/restore

luci-app-gitea:
- Cyberpunk themed dashboard
- Repository browser with clone URLs
- User management interface
- Server and security settings
- Backup/restore functionality
- 18 RPCD methods

Resource requirements: 256MB RAM minimum, ~100MB storage

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 10:03:31 +01:00

245 lines
4.4 KiB
JavaScript

'use strict';
'require rpc';
'require baseclass';
/**
* Gitea Platform API Module
* RPCD interface for Gitea Platform
*/
var callGetStatus = rpc.declare({
object: 'luci.gitea',
method: 'get_status',
expect: { result: {} }
});
var callGetStats = rpc.declare({
object: 'luci.gitea',
method: 'get_stats',
expect: { result: {} }
});
var callGetConfig = rpc.declare({
object: 'luci.gitea',
method: 'get_config',
expect: { result: {} }
});
var callSaveConfig = rpc.declare({
object: 'luci.gitea',
method: 'save_config',
params: ['http_port', 'ssh_port', 'http_host', 'data_path', 'memory_limit', 'enabled', 'app_name', 'domain', 'protocol', 'disable_registration', 'require_signin', 'landing_page'],
expect: { result: {} }
});
var callStart = rpc.declare({
object: 'luci.gitea',
method: 'start',
expect: { result: {} }
});
var callStop = rpc.declare({
object: 'luci.gitea',
method: 'stop',
expect: { result: {} }
});
var callRestart = rpc.declare({
object: 'luci.gitea',
method: 'restart',
expect: { result: {} }
});
var callInstall = rpc.declare({
object: 'luci.gitea',
method: 'install',
expect: { result: {} }
});
var callUninstall = rpc.declare({
object: 'luci.gitea',
method: 'uninstall',
expect: { result: {} }
});
var callUpdate = rpc.declare({
object: 'luci.gitea',
method: 'update',
expect: { result: {} }
});
var callGetLogs = rpc.declare({
object: 'luci.gitea',
method: 'get_logs',
params: ['lines'],
expect: { result: {} }
});
var callListRepos = rpc.declare({
object: 'luci.gitea',
method: 'list_repos',
expect: { result: {} }
});
var callGetRepo = rpc.declare({
object: 'luci.gitea',
method: 'get_repo',
params: ['name', 'owner'],
expect: { result: {} }
});
var callListUsers = rpc.declare({
object: 'luci.gitea',
method: 'list_users',
expect: { result: {} }
});
var callCreateAdmin = rpc.declare({
object: 'luci.gitea',
method: 'create_admin',
params: ['username', 'password', 'email'],
expect: { result: {} }
});
var callCreateBackup = rpc.declare({
object: 'luci.gitea',
method: 'create_backup',
expect: { result: {} }
});
var callListBackups = rpc.declare({
object: 'luci.gitea',
method: 'list_backups',
expect: { result: {} }
});
var callRestoreBackup = rpc.declare({
object: 'luci.gitea',
method: 'restore_backup',
params: ['file'],
expect: { result: {} }
});
var callGetInstallProgress = rpc.declare({
object: 'luci.gitea',
method: 'get_install_progress',
expect: { result: {} }
});
return baseclass.extend({
getStatus: function() {
return callGetStatus();
},
getStats: function() {
return callGetStats();
},
getConfig: function() {
return callGetConfig();
},
saveConfig: function(config) {
return callSaveConfig(
config.http_port,
config.ssh_port,
config.http_host,
config.data_path,
config.memory_limit,
config.enabled,
config.app_name,
config.domain,
config.protocol,
config.disable_registration,
config.require_signin,
config.landing_page
);
},
start: function() {
return callStart();
},
stop: function() {
return callStop();
},
restart: function() {
return callRestart();
},
install: function() {
return callInstall();
},
uninstall: function() {
return callUninstall();
},
update: function() {
return callUpdate();
},
getLogs: function(lines) {
return callGetLogs(lines || 100).then(function(res) {
return res.logs || [];
});
},
listRepos: function() {
return callListRepos().then(function(res) {
return {
repos: res.repos || [],
repo_root: res.repo_root || '/srv/gitea/git/repositories'
};
});
},
getRepo: function(name, owner) {
return callGetRepo(name, owner);
},
listUsers: function() {
return callListUsers().then(function(res) {
return res.users || [];
});
},
createAdmin: function(username, password, email) {
return callCreateAdmin(username, password, email);
},
createBackup: function() {
return callCreateBackup();
},
listBackups: function() {
return callListBackups().then(function(res) {
return res.backups || [];
});
},
restoreBackup: function(file) {
return callRestoreBackup(file);
},
getInstallProgress: function() {
return callGetInstallProgress();
},
getDashboardData: function() {
var self = this;
return Promise.all([
self.getStatus(),
self.getStats(),
self.getLogs(50)
]).then(function(results) {
return {
status: results[0] || {},
stats: results[1] || {},
logs: results[2] || []
};
});
}
});