1 |
#!/bin/sh |
#!/bin/sh |
2 |
|
|
3 |
|
MCORE_LIBDIR="@@MCORE_LIBDIR@@" |
4 |
|
|
5 |
|
# respect system env (proxy settings etc) |
6 |
|
if [ -e @@SYSCONFDIR@@/profile ] |
7 |
|
then |
8 |
|
source @@SYSCONFDIR@@/profile |
9 |
|
fi |
10 |
|
|
11 |
# globals |
# globals |
12 |
source include/daemon.global.class |
# include function comes with common.global class |
13 |
source include/sessionauth.global.class |
source ${MCORE_LIBDIR}/include/common.global.class |
14 |
source include/mysqlfunctions.global.class |
include ${MCORE_LIBDIR}/include/daemon.global.class |
15 |
|
include ${MCORE_LIBDIR}/include/sessionauth.global.class |
16 |
# control specific |
include ${MCORE_LIBDIR}/include/mysqlfunctions.global.class |
17 |
#source include/graphic.control.class |
include ${MCORE_LIBDIR}/include/register.global.class |
18 |
#source include/input.control.class |
include ${MCORE_LIBDIR}/include/control.global.class |
19 |
for i in include/*.control.class |
#include ${MCORE_LIBDIR}/include/hwdetection.global.class |
20 |
do |
|
21 |
source ${i} || echo "error loading ${i}" |
# load control classes plugins |
22 |
done |
load_classes control |
23 |
|
|
24 |
|
# config settings |
25 |
|
include @@SYSCONFDIR@@/mcore/mcore.conf |
26 |
|
|
27 |
SQL_USER=alx |
SQL_USER=alx_install |
28 |
SQL_PASS=@lx |
SQL_PASS=@lx |
29 |
SQL_HOST=localhost |
SQL_HOST=localhost |
30 |
SQL_DB=alx_web |
SQL_DB=alx_web |
31 |
|
|
32 |
import_resource() |
# 0=false, 1=true |
|
{ |
|
|
local table="$1" |
|
|
local serial="$2" |
|
|
local resource="$3" |
|
|
local value="$4" |
|
|
|
|
|
if [[ ${DEBUG} = 1 ]] |
|
|
then |
|
|
echo "${table}->${resource}=${value}" >> /root/lala.log |
|
|
echo "mysqldo \"update ${table} set ${resource}='${value}' where serial=${serial};\"" >> /root/lala.log |
|
|
fi |
|
|
|
|
|
mysql_insert "${table}",serial="${serial}","${resource}"="${value}" |
|
|
} |
|
|
|
|
|
run_class() |
|
|
{ |
|
|
local method="$1" |
|
|
local caller="$2" |
|
|
local class |
|
|
local cmd |
|
|
local argv |
|
|
|
|
|
if validate_session |
|
|
then |
|
|
class="${caller%.*}" |
|
|
cmd="${caller#*.}" |
|
|
argv="${@/${caller}/}" # remove caller |
|
|
argv="${argv/${method}/}" # remove method |
|
|
|
|
|
# echo "method=${method}" |
|
|
# echo "caller=${caller}" |
|
|
# echo "class=${class}" |
|
|
# echo "cmd=${cmd}" |
|
|
# echo "argv=${argv}" |
|
|
|
|
|
# check if class.cmd exist |
|
|
if [[ ! -z $(typeset -f "${method}"_"${class}"_"${cmd}") ]] |
|
|
then |
|
|
"${method}"_"${class}"_"${cmd}" ${argv} |
|
|
else |
|
|
echo "unknown class.cmd" |
|
|
fi |
|
|
else |
|
|
invalid_session |
|
|
fi |
|
|
} |
|
|
|
|
|
nsslsay() |
|
|
{ |
|
|
nssl "${IP}" "${PORT}" << EOF |
|
|
auth ${SSLSAY_USER} ${SSLSAY_PASS} |
|
|
$@ |
|
|
quit |
|
|
EOF |
|
|
} |
|
|
|
|
|
control_client() |
|
|
{ |
|
|
local serial="$1" |
|
|
local command="${@/$1/}" |
|
|
local IP |
|
|
|
|
|
IP=$(mysqldo "select ip from state_connected where serial='${serial}'") |
|
|
if [[ -z ${IP} ]] |
|
|
then |
|
|
echo "no ip found for client '${serial}'" |
|
|
return 1 |
|
|
fi |
|
|
|
|
|
nsslsay "${command}" |
|
|
} |
|
|
|
|
|
|
|
33 |
DEBUG=1 |
DEBUG=1 |
34 |
#IP="192.168.0.6" |
NOCOLORS=0 |
35 |
PORT="6666" |
WEBCRLF=0 |
36 |
SSLSAY_USER="foo" |
QUIET=0 |
37 |
SSLSAY_PASS="bar" |
|
38 |
|
# argvs are global variables - this fixes issues with whitespaces |
39 |
|
# global argvs, the whole command line |
40 |
|
export GLOBAL_ARGV |
41 |
|
# class specific argvs which are given to the class as parameters |
42 |
|
export CLASS_ARGV |
43 |
|
|
44 |
run=run |
run=run |
45 |
valid_session=no |
valid_session=no |
46 |
|
|
47 |
|
# tell what we are |
48 |
|
echo "Connected to $(print_version)" |
49 |
|
|
50 |
while [[ ${run} = run ]] |
while [[ ${run} = run ]] |
51 |
do |
do |
52 |
|
# use an echo here not read -p '>' because sslsvd ignores the prompt pattern |
53 |
|
echo -n '> ' |
54 |
read line |
read line |
55 |
|
eval "GLOBAL_ARGV=( ${line} )" |
56 |
|
|
57 |
case ${line} in |
case ${GLOBAL_ARGV[0]} in |
58 |
quit) run=quit ;; |
quit) run=quit ;; |
59 |
# only react on the globals -> import|get|set|auth|control |
|
60 |
import*) run_class ${line} ;; |
# only react on the globals -> import|get|set|auth |
61 |
get*) run_class ${line} ;; |
import) run_class ;; |
62 |
set*) run_class ${line} ;; |
control) run_class ;; |
63 |
auth*) validate_auth ${line/auth /} ;; |
get) run_class ;; |
64 |
# control client daemons |
set) run_class ;; |
65 |
#control*) control_client ${line/control /} ;; |
auth) validate_auth ${GLOBAL_ARGV[*]:1} ;; |
66 |
control*) run_class ${line} ;; |
certauth) validate_auth_certificate ${GLOBAL_ARGV[*]:1} ;; |
67 |
*) echo "$line" >> /root/lala.log ;; |
register) valid_session && validate_client ${GLOBAL_ARGV[*]:1} ;; |
68 |
|
provide) valid_session && print_provide ;; |
69 |
|
require) valid_session && verify_requirements ;; |
70 |
|
reload) valid_session && mecho "reloading client classes ..." && load_classes client ;; |
71 |
|
restart) valid_session && restart_service ;; |
72 |
|
stop) valid_session && stop_service ;; |
73 |
|
nocolors) export NOCOLORS=1 ;; |
74 |
|
colors) export NOCOLORS=0 ;; |
75 |
|
webcrlf) export WEBCRLF=1 ;; |
76 |
|
quiet) export QUIET=1 ;; |
77 |
|
# version does not need auth |
78 |
|
version) print_version ;; |
79 |
|
help) |
80 |
|
if valid_session |
81 |
|
then |
82 |
|
if [[ ${line} = help ]] |
83 |
|
then |
84 |
|
help_topics |
85 |
|
else |
86 |
|
run_class ${line} |
87 |
|
fi |
88 |
|
else |
89 |
|
mecho "You must authenticate yourself first!" |
90 |
|
mecho " auth [username] [password]" |
91 |
|
mecho "or" |
92 |
|
mecho " certauth [certificate fingerprint]" |
93 |
|
fi |
94 |
|
;; |
95 |
|
|
96 |
|
*) |
97 |
|
mecho "Unknown command '${line}'" |
98 |
|
mecho "Type 'help' for more information." |
99 |
|
#echo "$line" >> /root/lala.log |
100 |
|
;; |
101 |
esac |
esac |
|
done |
|
102 |
|
|
103 |
|
# unset argvs to be safe |
104 |
|
unset GLOBAL_ARGS |
105 |
|
unset CLASS_ARGS |
106 |
|
done |