il fallait que sa puisse passer sur un cv
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
//@ts-check
|
||||
//@ts-expect-error
|
||||
const { syscall } = require('./syscall.node')
|
||||
const errno = require('./errno')
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
|
||||
|
||||
// TBD
|
||||
const SYSCALL_INIT_MODULE = 105
|
||||
const SYSCALL_FINIT_MODULE = 273
|
||||
|
||||
const doProcExists = () => fs.existsSync('/proc')
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} path
|
||||
* @param {string} params
|
||||
* @param {number} flags
|
||||
* @deprecated un tested dangerous
|
||||
*/
|
||||
function finit_module(path, params = "", flags = 0) {
|
||||
const fileDescriptor = fs.openSync(path, 'r')
|
||||
const result = syscall(SYSCALL_FINIT_MODULE, fileDescriptor, params, flags)
|
||||
if(result > 0) {
|
||||
throw new Error(errno[result])
|
||||
} else {
|
||||
if(result == -1) {
|
||||
throw new Error('non number or string argument recived')
|
||||
}else if(result == -2) {
|
||||
throw new Error('unsuported argument length (1-5)')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function uname() {
|
||||
if(!doProcExists) {
|
||||
throw "Proc don't exists exception"
|
||||
}
|
||||
const linuxVersionString = fs.readFileSync('/proc/version').toString()
|
||||
return linuxVersionString.split(' ')[2]
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} modulename
|
||||
*/
|
||||
function modprobe(modulename) {
|
||||
const name = uname()
|
||||
if(fs.existsSync(path.join('/lib/modules', name, 'kernel', modulename))) {
|
||||
finit_module(path.join('/lib/modules', name, 'kernel', modulename))
|
||||
} else {
|
||||
throw new Error("file not found " + path.join('/lib/modules', name, 'kernel', modulename))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function lsmod() {
|
||||
if(!doProcExists) {
|
||||
throw "Proc don't exists exception"
|
||||
}
|
||||
return fs.readFileSync('/proc/modules').toString('utf-8').split('\n')
|
||||
}
|
||||
|
||||
module.exports = { modprobe, uname, finit_module, doProcExists, lsmod, syscall }
|
||||
Reference in New Issue
Block a user