mirror of
https://github.com/FAUSheppy/config
synced 2025-12-09 16:18:33 +01:00
zshrc update and whoist script
This commit is contained in:
197
whoist_script/woist.php
Normal file
197
whoist_script/woist.php
Normal file
@@ -0,0 +1,197 @@
|
||||
<?php
|
||||
|
||||
// Read config file
|
||||
if(!file_exists(getenv('HOME') . '/.woistdb')) {
|
||||
$config = array('known' => array());
|
||||
} else {
|
||||
$config = json_decode(file_get_contents(getenv('HOME') . '/.woistdb'), true);
|
||||
}
|
||||
|
||||
|
||||
if($argc == 1) {
|
||||
echo 'Syntax: ' . $argv[0] . ' show' . PHP_EOL;
|
||||
echo 'Syntax: ' . $argv[0] . ' all' . PHP_EOL;
|
||||
echo 'Syntax: ' . $argv[0] . ' add <login> [nickname]' . PHP_EOL;
|
||||
echo 'Syntax: ' . $argv[0] . ' del <login>' . PHP_EOL;
|
||||
echo 'Syntax: ' . $argv[0] . ' list' . PHP_EOL;
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
|
||||
$mode = $argv[1];
|
||||
|
||||
function write_config($config) {
|
||||
// Write config file
|
||||
$fp = fopen(getenv('HOME') . '/.woistdb', 'w+');
|
||||
if(!flock($fp, LOCK_EX)) {
|
||||
echo 'Could not get file lock.';
|
||||
exit(-1);
|
||||
}
|
||||
fwrite($fp, json_encode($config));
|
||||
fclose($fp);
|
||||
}
|
||||
|
||||
|
||||
// Add new user to database
|
||||
if($mode == 'add') {
|
||||
if($argc != 3 && $argc != 4) {
|
||||
echo 'Invalid number of arguments.';
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
$login = $argv[2];
|
||||
$nickname = null;
|
||||
if($argc == 4) {
|
||||
$nickname = $argv[3];
|
||||
}
|
||||
|
||||
$config['known'][$login] = $nickname;
|
||||
|
||||
write_config($config);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
// Remove user from database
|
||||
if($mode == 'del') {
|
||||
if($argc != 3) {
|
||||
echo 'Invalid number of arguments.';
|
||||
exit(-1);
|
||||
}
|
||||
$login = $argv[2];
|
||||
|
||||
unset($config['known'][$login]);
|
||||
|
||||
write_config($config);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
// Show database
|
||||
if($mode == 'list') {
|
||||
if($argc != 2) {
|
||||
echo 'Invalid number of arguments.';
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
echo 'Database:' . PHP_EOL;
|
||||
foreach($config['known'] as $login => $nickname) {
|
||||
echo '- ' . $login . ': ' . $nickname . PHP_EOL;
|
||||
}
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function hostmatch($h, $p) {
|
||||
if(preg_match('/^' . $p . '$/', $h)) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
function getCip($host) {
|
||||
|
||||
if(hostmatch($host, 'faui03i')
|
||||
) return 'FSI-Zimmer';
|
||||
|
||||
if(hostmatch($host, 'faui00[a-y]')
|
||||
|| hostmatch($host, 'faui02[a-y]')
|
||||
|| hostmatch($host, 'faui0f[a-u]')
|
||||
) return 'Cip 2';
|
||||
|
||||
if(hostmatch($host, 'faui0a[a-q]')
|
||||
|| hostmatch($host, 'faui0b[a-l]')
|
||||
) return 'BibCip';
|
||||
|
||||
if(hostmatch($host, 'faui0e[a-o]')
|
||||
|| hostmatch($host, 'faui06[a-q]')
|
||||
|| hostmatch($host, 'faui05[a-h]')
|
||||
|| hostmatch($host, 'faui08[a-p]')
|
||||
) return 'Cip 1';
|
||||
|
||||
if(hostmatch($host, 'faui09[a-j]')
|
||||
|| hostmatch($host, 'faui01[a-r]')
|
||||
) return 'WinCip';
|
||||
|
||||
if(hostmatch($host, 'faui0d[a-u]')
|
||||
) return 'STFUcip';
|
||||
|
||||
if(hostmatch($host, 'faui0c[a-q]')
|
||||
) return 'CIP4';
|
||||
|
||||
if(hostmatch($host, 'faui04[a-s]')
|
||||
) return 'Huber-Cip';
|
||||
|
||||
return 'unknown';
|
||||
}
|
||||
|
||||
function mkspace($num) {
|
||||
$res = '';
|
||||
for($i = 0; $i < $num; $i++) {
|
||||
$res .= ' ';
|
||||
}
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
||||
if($mode == 'show' || $mode == 'all') {
|
||||
|
||||
$showall = false;
|
||||
if($mode == 'all') $showall = true;
|
||||
|
||||
|
||||
$result = array();
|
||||
|
||||
$current_hostname = '';
|
||||
$rows = file('/proj/ciptmp/av37umic/scripts/woist.txt');
|
||||
if(!$rows) {
|
||||
echo 'Error reading list.';
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
foreach($rows as $r) {
|
||||
if(preg_match('/^(faui0..)\./', $r, $matches)) {
|
||||
$current_hostname = $matches[1];
|
||||
continue;
|
||||
}
|
||||
|
||||
if($r) {
|
||||
preg_match('/^([^ ]+) \(([^,]+).+? (\d+)$/', $r, $matches);
|
||||
if(!$matches) continue;
|
||||
|
||||
$login = $matches[1];
|
||||
$name = $matches[2];
|
||||
$idletime = $matches[3];
|
||||
|
||||
if(!$showall && !array_key_exists($login, $config['known'])) continue;
|
||||
|
||||
if($idletime < 900) {
|
||||
$prefix = "\t";
|
||||
$nickname = '';
|
||||
if(array_key_exists($login, $config['known'])) {
|
||||
$nickname = $config['known'][$login];
|
||||
if($showall) {
|
||||
$prefix = ' * ';
|
||||
}
|
||||
}
|
||||
$result[getCip($current_hostname)][] = $prefix . $login . mkspace(12 - strlen($login)) . $nickname . mkspace(15 - strlen($nickname)) . $name . mkspace(30 - strlen($name)) . ' (' . $current_hostname . ')';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
foreach($result as $cip => $a) {
|
||||
echo $cip . PHP_EOL;
|
||||
foreach($a as $r) {
|
||||
echo $r . PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
echo 'Invalid mode!';
|
||||
exit(-1);
|
||||
|
||||
Reference in New Issue
Block a user