Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
eepm
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
etersoft
eepm
Commits
7ca79667
Commit
7ca79667
authored
Aug 18, 2016
by
Vitaly Lipatov
Browse files
Options
Browse Files
Download
Plain Diff
backported to p8 as 1.9.1-alt0.M80P.1 (with rpmbph script)
parents
517cc14c
db22b2f8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
369 additions
and
67 deletions
+369
-67
epm
bin/epm
+1
-1
epm-check
bin/epm-check
+2
-2
epm-epm_install
bin/epm-epm_install
+8
-14
epm-install
bin/epm-install
+59
-18
epm-sh-functions
bin/epm-sh-functions
+2
-1
epm-update
bin/epm-update
+3
-3
epm-upgrade
bin/epm-upgrade
+8
-6
serv
bin/serv
+3
-1
serv-reload
bin/serv-reload
+46
-0
tools_eget
bin/tools_eget
+14
-4
eepm.spec
eepm.spec
+10
-2
pack_in_onefile.sh
pack_in_onefile.sh
+11
-7
epm.sh
packed/epm.sh
+0
-0
serv.sh
packed/serv.sh
+202
-8
No files found.
bin/epm
View file @
7ca79667
...
...
@@ -278,7 +278,7 @@ check_command()
site|url
)
# HELPCMD: open package's site in a browser (use -p for open packages.altlinux.org site)
epm_cmd
=
site
;;
ei|epminstall|selfinstall
)
# HELPCMD: install or update eepm from all in one script
ei|epminstall|
epm-install|
selfinstall
)
# HELPCMD: install or update eepm from all in one script
epm_cmd
=
epm_install
;;
print
)
# HELPCMD: print various info, run epm print help for details
...
...
bin/epm-check
View file @
7ca79667
...
...
@@ -28,11 +28,11 @@ case $PMTYPE in
apt-dpkg
)
#sudocmd apt-get update || exit
#sudocmd apt-get check || exit
sudocmd apt-get
-f
install
||
exit
sudocmd apt-get
-f
install
||
return
sudocmd apt-get autoremove
;;
aptitude-dpkg
)
sudocmd aptitude
-f
install
||
exit
sudocmd aptitude
-f
install
||
return
#sudocmd apt-get autoremove
;;
yum-rpm
)
...
...
bin/epm-epm_install
View file @
7ca79667
...
...
@@ -2,6 +2,7 @@
# Copyright (C) 2016 Etersoft
# Copyright (C) 2016 Danil Mikhailov <danil@etersoft.ru>
# Copyright (C) 2016 Vitaly Lipatov <lav@etersoft.ru>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
...
...
@@ -17,20 +18,13 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
myinit
(){
etersoft_updates_site
=
"http://updates.etersoft.ru/pub/Etersoft/Sisyphus/
$(
$DISTRVENDOR
-e
)
/"
download_dir
=
"/tmp"
}
download_epm
(){
download_link
=
$etersoft_updates_site
$(
wget
-qO-
$etersoft_updates_site
/ |
grep
-m1
-Eo
"eepm[^
\"
]+
\.
$(
$DISTRVENDOR
-p
)
"
|
tail
-n1
)
#"
eepm_package
=
"
$download_dir
/
$(
basename
$download_link
)
"
wget
-O
$eepm_package
$download_link
}
load_helper epm-install
epm_epm_install
(){
myinit
download_epm
||
fatal
"Error. Check download link:
$download_link
"
epm i
$eepm_package
||
fatal
rm
-fv
$eepm_package
assure_exists wget
local
etersoft_updates_site
=
"http://updates.etersoft.ru/pub/Korinf/
$(
$DISTRVENDOR
-e
)
"
# FIXME: some way to get latest package
local
download_link
=
$etersoft_updates_site
/
$(
wget
-qO-
$etersoft_updates_site
/ |
grep
-m1
-Eo
"eepm[^
\"
]+
\.
$(
$DISTRVENDOR
-p
)
"
|
tail
-n1
)
#"
pkg_names
=
pkg_files
=
pkg_urls
=
$download_link
epm_install
}
bin/epm-install
View file @
7ca79667
...
...
@@ -82,15 +82,6 @@ __separate_sudocmd()
return
0
}
download_pkg_urls
()
{
local
url
[
-z
"
$1
"
]
&&
return
for
url
in
$*
;
do
eget
$url
||
warning
"Skipped"
done
}
# copied from etersoft-build-utils/share/eterbuild/functions/rpmpkg
epm_install_names
()
{
...
...
@@ -490,6 +481,57 @@ epm_print_install_command()
esac
}
download_pkg_urls
()
{
local
url
[
-z
"
$pkg_urls
"
]
&&
return
for
url
in
$pkg_urls
;
do
# TODO: use some individual tmp dir
local
new_file
=
/tmp/
$(
basename
"
$url
"
)
if
eget
-O
$new_file
$url
&&
[
-s
"
$new_file
"
]
;
then
pkg_files
=
"
$pkg_files
$new_file
"
to_remove_pkg_files
=
"
$to_remove_pkg_files
$new_file
"
else
warning
"Failed to download
$url
, ignoring"
fi
done
}
__handle_pkg_urls
()
{
[
-n
"
$pkg_urls
"
]
||
return
# TODO: do it correcly
to_remove_pkg_files
=
case
$PMTYPE
in
apt-rpm
)
# ALT Linux really?
pkg_names
=
"
$pkg_names
$pkg_urls
"
;;
#deepsolver-rpm)
# pkg_names="$pkg_names $pkg_urls"
# ;;
#urpm-rpm)
# pkg_names="$pkg_names $pkg_urls"
# ;;
pacman
)
pkg_names
=
"
$pkg_names
$pkg_urls
"
;;
yum-rpm|dnf-rpm
)
pkg_names
=
"
$pkg_names
$pkg_urls
"
;;
#zypper-rpm)
# pkg_names="$pkg_names $pkg_urls"
# ;;
*
)
# use workaround with eget: download and put in pkg_files
download_pkg_urls
;;
esac
pkg_urls
=
}
epm_install
()
{
...
...
@@ -498,19 +540,13 @@ epm_install()
return
fi
# Download urls via eget pkg_urls and use eget
# TODO: use optimization (rpm can download packages by url, yum too?)
#[ -n "$pkg_urls" ] && warning "URL using does not realize yet"
#download_pkg_urls "$pkg_urls"
# temp. hack
pkg_files
=
"
$pkg_files
$pkg_urls
"
# TODO: add downloaded files to $pkg_files
# in any case it will put pkg_urls into pkg_files or pkg_names
__handle_pkg_urls
[
-z
"
$pkg_files$pkg_names
$pkg_urls
"
]
&&
info
"Skip empty install list"
&&
return
22
[
-z
"
$pkg_files$pkg_names
"
]
&&
info
"Skip empty install list"
&&
return
22
local
names
=
"
$(
echo
$pkg_names
| filter_out_installed_packages
)
"
local
files
=
"
$(
echo
$pkg_files
| filter_out_installed_packages
)
"
local
urls
=
"
$(
echo
$pkg_urls
| filter_out_installed_packages
)
"
[
-z
"
$files$names
"
]
&&
info
"Skip empty install list"
&&
return
22
...
...
@@ -521,4 +557,9 @@ epm_install()
epm_install_names
$names
||
return
epm_install_files
$files
# TODO: reinvent
local
RETVAL
=
$?
[
-n
"
$to_remove_pkg_files
"
]
&&
rm
-fv
$to_remove_pkg_files
return
$RETVAL
}
bin/epm-sh-functions
View file @
7ca79667
...
...
@@ -349,7 +349,8 @@ assure_exists()
eget
()
{
$SHAREDIR
/tools-eget
"
$@
"
assure_exists wget
$SHAREDIR
/tools_eget
"
$@
"
}
# TODO: improve and drop!
...
...
bin/epm-update
View file @
7ca79667
...
...
@@ -26,11 +26,11 @@ epm_update()
case
$PMTYPE
in
apt-rpm
)
sudocmd apt-get update
||
exit
sudocmd apt-get update
||
return
#sudocmd apt-get -f install || exit
;;
apt-dpkg
)
sudocmd apt-get update
||
exit
sudocmd apt-get update
||
return
#sudocmd apt-get -f install || exit
#sudocmd apt-get autoremove
;;
...
...
@@ -38,7 +38,7 @@ case $PMTYPE in
# sudocmd snappy
# ;;
aptitude-dpkg
)
sudocmd aptitude update
||
exit
sudocmd aptitude update
||
return
;;
yum-rpm
)
info
"update command is stubbed for yum"
...
...
bin/epm-upgrade
View file @
7ca79667
#!/bin/sh
#
# Copyright (C) 2012,
2014
Etersoft
# Copyright (C) 2012,
2014
Vitaly Lipatov <lav@etersoft.ru>
# Copyright (C) 2012,
2014, 2016
Etersoft
# Copyright (C) 2012,
2014, 2016
Vitaly Lipatov <lav@etersoft.ru>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
...
...
@@ -32,19 +32,21 @@ epm_upgrade()
case
$PMTYPE
in
apt-rpm|apt-dpkg
)
# non_interactive
local
APTOPTIONS
=
"
$(
subst_option non_interactive
-y
)
"
# Функцию добавления параметра при условии
CMD
=
"apt-get dist-upgrade
$noremove
"
CMD
=
"apt-get
$APTOPTIONS
dist-upgrade
$noremove
"
;;
aptitude-dpkg
)
CMD
=
"aptitude dist-upgrade"
;;
yum-rpm
)
local
OPTIONS
=
"
$(
subst_option non_interactive
-y
)
"
# can do update repobase automagically
CMD
=
"yum update"
CMD
=
"yum
$OPTIONS
update"
;;
dnf-rpm
)
CMD
=
"dnf distro-sync"
local
OPTIONS
=
"
$(
subst_option non_interactive
-y
)
"
CMD
=
"dnf
$OPTIONS
distro-sync"
;;
snappy
)
CMD
=
"snappy update"
...
...
bin/serv
View file @
7ca79667
...
...
@@ -163,7 +163,9 @@ check_command()
restart
)
# HELPCMD: restart service
serv_cmd
=
restart
;;
#reload) # HELPCMD: reload service
reload
)
# HELPCMD: reload service
serv_cmd
=
reload
;;
start
)
# HELPCMD: start service
serv_cmd
=
start
;;
...
...
bin/serv-reload
0 → 100644
View file @
7ca79667
#!/bin/sh
#
# Copyright (C) 2012, 2016 Etersoft
# Copyright (C) 2012, 2016 Vitaly Lipatov <lav@etersoft.ru>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
load_helper serv-status
# Reload service (try send SIGHUP or so on to reread config)
serv_reload
()
{
local
SERVICE
=
"
$1
"
shift
case
$SERVICETYPE
in
service-chkconfig|service-upstart
)
if
is_anyservice
$SERVICE
;
then
sudocmd anyservice
$SERVICE
reload
return
fi
sudocmd service
$SERVICE
reload
"
$@
"
;;
service-initd|service-update
)
sudocmd
$INITDIR
/
$SERVICE
reload
"
$@
"
;;
systemd
)
sudocmd systemctl reload
$SERVICE
"
$@
"
;;
*
)
fatal
"Have no suitable command for
$SERVICETYPE
"
;;
esac
}
bin/tools
-
eget
→
bin/tools
_
eget
View file @
7ca79667
...
...
@@ -3,8 +3,9 @@
# Example use:
# eget ftp://ftp.altlinux.ru/pub/security/ssl/*
#
# Copyright (C) 2014-2014 Etersoft
# Copyright (C) 2014-2014 Daniil Mikhailov <danil@etersoft.ru>
# Copyright (C) 2014-2014, 2016 Etersoft
# Copyright (C) 2014 Daniil Mikhailov <danil@etersoft.ru>
# Copyright (C) 2016 Vitaly Lipatov <lav@etersoft.ru>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
...
...
@@ -28,12 +29,21 @@ if [ "$1" = "-q" ] ; then
fi
# TODO:
# download to this file
WGET_OPTION_TARGET
=
if
[
"
$1
"
=
"-O"
]
;
then
TARGETFILE
=
"
$2
"
WGET_OPTION_TARGET
=
"-O
$2
"
shift
2
fi
# TODO:
# -P support
# If ftp protocol or have no asterisk, jus download
# If ftp protocol or have no asterisk, jus
t
download
# TODO: use has()
if
echo
"
$1
"
|
grep
-q
"
\(
^ftp://
\|
[^*]
$\
)"
;
then
$WGET
"
$1
"
$WGET
$WGET_OPTION_TARGET
"
$1
"
exit
fi
...
...
eepm.spec
View file @
7ca79667
# This spec is backported to ALTLinux p8 automatically by rpmbph script from etersoft-build-utils.
#
Name: eepm
Version: 1.9.
0
Version: 1.9.
1
Release: alt0.M80P.1
Summary: Etersoft EPM package manager
...
...
@@ -67,9 +67,17 @@ chmod a+x %buildroot%_datadir/%name/{serv-,epm-}*
%_sysconfdir/bash_completion.d/cerv
%changelog
*
Wed Aug 17 2016 Vitaly Lipatov <lav@altlinux.ru> 1.9.0
-alt0.M80P.1
*
Thu Aug 18 2016 Vitaly Lipatov <lav@altlinux.ru> 1.9.1
-alt0.M80P.1
- backport to ALTLinux p8 (by rpmbph script)
* Thu Aug 18 2016 Vitaly Lipatov <lav@altlinux.ru> 1.9.1-alt1
- upgrade: add --auto support for apt and yum/dnf
- serv: add reload command support
- improve eget to support -O file
- epm-install: add real support install by url
- epm_install: rewrite, use direct install via epm_install
- epm_install: rewrite with pkg_urls support using
* Wed Aug 17 2016 Vitaly Lipatov <lav@altlinux.ru> 1.9.0-alt1
- improve urpmi support
- serv: check anyservice support against anyservice version 0.3
...
...
pack_in_onefile.sh
View file @
7ca79667
...
...
@@ -2,8 +2,8 @@
#
# Run for create one-file-scripts
#
# Copyright (C) 2012 Etersoft
# Copyright (C) 2012 Vitaly Lipatov <lav@etersoft.ru>
# Copyright (C) 2012
, 2016
Etersoft
# Copyright (C) 2012
, 2016
Vitaly Lipatov <lav@etersoft.ru>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
...
...
@@ -20,14 +20,15 @@
#
incorporate_
distr_info
()
incorporate_
subfile
()
{
cat
<<
EOF
>>
$OUTPUT
internal_distr_info()
internal_
$1
()
{
EOF
cat
bin/
distr_info
>>
$OUTPUT
cat
bin/
$1
|
grep
-v
"^#!/bin/sh"
|
sed
-e
"s| exit
$|
return|g"
>>
$OUTPUT
cat
<<
EOF
>>
$OUTPUT
}
...
...
@@ -41,7 +42,9 @@ get_version()
filter_out
()
{
grep
-v
"^[ ]*load_helper "
|
sed
-e
's|DISTRVENDOR=$PROGDIR/distr_info|DISTRVENDOR=internal_distr_info|g'
|
\
grep
-v
"^[ ]*load_helper "
|
\
sed
-e
's|$SHAREDIR/tools_eget|internal_tools_eget|g'
|
\
sed
-e
's|DISTRVENDOR=$PROGDIR/distr_info|DISTRVENDOR=internal_distr_info|g'
|
\
sed
-e
"s|@VERSION@|
$(
get_version
)
|g"
}
...
...
@@ -59,7 +62,8 @@ for i in bin/epm-sh-functions $(ls -1 bin/$PACKCOMMAND-* | grep -v epm-sh-functi
cat
$i
|
grep
-v
"^#"
done
| filter_out
>>
$OUTPUT
incorporate_distr_info
incorporate_subfile distr_info
incorporate_subfile tools_eget
awk
'BEGIN{desk=0}{if(desk>0) {print} ; if(/^load_helper epm-sh-functions/){desk++}}'
<bin/
$PACKCOMMAND
| filter_out
>>
$OUTPUT
chmod
0755
$OUTPUT
...
...
packed/epm.sh
View file @
7ca79667
This diff is collapsed.
Click to expand it.
packed/serv.sh
View file @
7ca79667
...
...
@@ -340,7 +340,8 @@ assure_exists()
eget
()
{
$SHAREDIR
/tools-eget
"
$@
"
assure_exists wget
internal_tools_eget
"
$@
"
}
get_package_type
()
...
...
@@ -501,6 +502,9 @@ serv_common()
shift
case
$SERVICETYPE
in
service-chkconfig|service-upstart
)
if
is_anyservice
$SERVICE
;
then
fatal
"Have no idea how to call anyservice service with args"
fi
sudocmd service
$SERVICE
"
$@
"
;;
service-initd|service-update
)
...
...
@@ -525,11 +529,17 @@ serv_common()
serv_disable
()
{
local
SERVICE
=
"
$1
"
is_service_running
$1
&&
{
serv_stop
$1
||
return
;
}
is_service_autostart
$1
||
{
echo
"Service
$1
already disabled for startup"
&&
return
;
}
case
$SERVICETYPE
in
service-chkconfig|service-upstart
)
if
is_anyservice
$SERVICE
;
then
sudocmd anyservice
$SERVICE
off
return
fi
sudocmd chkconfig
$1
off
;;
service-initd|service-update
)
...
...
@@ -547,13 +557,18 @@ serv_disable()
# File bin/serv-enable:
serv_enable
()
__
serv_enable
()
{
is_service_running
$1
||
serv_start
$1
||
return
local
SERVICE
=
"
$1
"
is_service_autostart
$1
&&
echo
"Service
$1
already enabled for startup"
&&
return
case
$SERVICETYPE
in
service-chkconfig
)
if
is_anyservice
$SERVICE
;
then
sudocmd anyservice
$SERVICE
on
return
fi
sudocmd chkconfig
--add
$1
||
return
sudocmd chkconfig
$1
on
;;
...
...
@@ -574,6 +589,13 @@ serv_enable()
}
serv_enable
()
{
__serv_enable
"
$1
"
||
return
# start if need
is_service_running
$1
||
serv_start
$1
||
return
}
# File bin/serv-list:
serv_list
()
...
...
@@ -592,6 +614,11 @@ serv_list()
for
i
in
$(
serv_list_all
)
;
do
is_service_running
$i
>
/dev/null
&&
echo
$i
done
# TODO: только запущенные
if
[
-n
"
$ANYSERVICE
"
]
;
then
sudocmd
$ANYSERVICE
list
return
fi
;;
esac
}
...
...
@@ -604,6 +631,11 @@ serv_list_all()
service-chkconfig|service-upstart
)
# service --status-all for Ubuntu/Fedora
sudocmd chkconfig
--list
|
cut
-f1
if
[
-n
"
$ANYSERVICE
"
]
;
then
sudocmd anyservice list
return
fi
;;
service-initd|service-update
)
sudocmd
ls
$INITDIR
/ |
grep
-v
README
...
...
@@ -636,6 +668,35 @@ serv_list_startup()
serv_print
()
{
echo
"Detected init system:
$SERVICETYPE
"
[
-n
"
$ANYSERVICE
"
]
&&
echo
"anyservice is detected too"
}
# File bin/serv-reload:
serv_reload
()
{
local
SERVICE
=
"
$1
"
shift
case
$SERVICETYPE
in
service-chkconfig|service-upstart
)
if
is_anyservice
$SERVICE
;
then
sudocmd anyservice
$SERVICE
reload
return
fi
sudocmd service
$SERVICE
reload
"
$@
"
;;
service-initd|service-update
)
sudocmd
$INITDIR
/
$SERVICE
reload
"
$@
"
;;
systemd
)
sudocmd systemctl reload
$SERVICE
"
$@
"
;;
*
)
fatal
"Have no suitable command for
$SERVICETYPE
"
;;
esac
}
# File bin/serv-restart:
...
...
@@ -648,6 +709,10 @@ serv_restart()
case
$SERVICETYPE
in
service-chkconfig|service-upstart
)
if
is_anyservice
$SERVICE
;
then
sudocmd anyservice
$SERVICE
restart
return
fi
sudocmd service
$SERVICE
restart
"
$@
"
;;
service-initd|service-update
)
...
...
@@ -671,6 +736,10 @@ serv_start()
case
$SERVICETYPE
in
service-chkconfig|service-upstart
)
if
is_anyservice
$SERVICE
;
then
sudocmd anyservice
$SERVICE
start
return
fi
sudocmd service
$SERVICE
start
"
$@
"
;;
service-initd|service-update
)
...
...
@@ -689,8 +758,14 @@ serv_start()
is_service_running
()
{
local
SERVICE
=
"
$1
"
case
$SERVICETYPE
in
service-chkconfig|service-upstart
)
if
is_anyservice
$1
;
then
$SUDO
anyservice
$1
status
>
/dev/null
return
fi
$SUDO
service
$1
status
>
/dev/null
;;
service-initd|service-update
)
...
...
@@ -707,9 +782,16 @@ is_service_running()
is_service_autostart
()
{
local
SERVICE
=
"
$1
"
case
$SERVICETYPE
in
service-chkconfig|service-upstart
)
# FIXME: check for current runlevel
if
is_anyservice
$SERVICE
;
then
$ANYSERVICE
$SERVICE
isautostarted
return
fi
# FIXME: check for current runlevel
LANG
=
C
$SUDO
chkconfig
$1
--list
|
grep
-q
"[35]:on"
;;
service-initd|service-update
)
...
...
@@ -733,6 +815,10 @@ serv_status()
case
$SERVICETYPE
in
service-chkconfig|service-upstart
)
if
is_anyservice
$SERVICE
;
then
sudocmd anyservice
$SERVICE
status
return
fi
sudocmd service
$SERVICE
status
"
$@
"
;;
service-update
)
...
...
@@ -756,6 +842,10 @@ serv_stop()
case
$SERVICETYPE
in
service-chkconfig|service-upstart
)
if
is_anyservice
$SERVICE
;
then
sudocmd anyservice
$SERVICE
stop
return
fi
sudocmd service
$SERVICE
stop
"
$@
"
;;
service-initd|service-update
)
...
...
@@ -781,7 +871,7 @@ serv_try_restart()
case
$SERVICETYPE
in
service-chkconfig|service-upstart
)
is_service_running
$SERVICE
||
return
0
sudocmd service
$SERVICE
restart
"
$@
"
docmd serv
$SERVICE
restart
"
$@
"
;;
service-initd|service-update
)
is_service_running
$SERVICE
||
return
0
...
...
@@ -828,9 +918,9 @@ serv_usage()
_print_additional_usage
}
internal_distr_info
()
{
#!/bin/sh
# Author: Vitaly Lipatov <lav@etersoft.ru>
# 2007, 2009, 2010, 2012 (c) Etersoft
# 2007 Public domain
...
...
@@ -1176,6 +1266,99 @@ esac
}
internal_tools_eget
()
{
# eget - simply shell on wget for loading directories over http
# Example use:
# eget ftp://ftp.altlinux.ru/pub/security/ssl/*
#
# Copyright (C) 2014-2014, 2016 Etersoft
# Copyright (C) 2014 Daniil Mikhailov <danil@etersoft.ru>
# Copyright (C) 2016 Vitaly Lipatov <lav@etersoft.ru>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
WGET
=
"wget"
if
[
"
$1
"
=
"-q"
]
;
then
WGET
=
"wget -q"
shift
fi
# TODO:
# download to this file
WGET_OPTION_TARGET
=
if
[
"
$1
"
=
"-O"
]
;
then
TARGETFILE
=
"
$2
"
WGET_OPTION_TARGET
=
"-O
$2
"
shift
2
fi
# TODO:
# -P support
# If ftp protocol or have no asterisk, just download
# TODO: use has()
if
echo
"
$1
"
|
grep
-q
"
\(
^ftp://
\|
[^*]
$\
)"
;
then
$WGET
$WGET_OPTION_TARGET
"
$1
"
return
fi
echo
"Fall to http workaround"
URL
=
$(
echo
"
$1
"
|
grep
"/$"
||
dirname
"
$1
"
)
# mask allowed only in last part of path
MASK
=
$(
basename
"
$1
"
)
get_index
()
{
MYTMPDIR
=
"
$(
mktemp
-d
)
"
INDEX
=
$MYTMPDIR
/index
$WGET
$URL
-O
$INDEX
}
print_files
()
{
cat
$INDEX
|
grep
-o
-E
'href="([^\*/"#]+)"'
|
cut
-d
'"'
-f2
}
create_fake_files
()
{
DIRALLFILES
=
"
$MYTMPDIR
/files/"
mkdir
-p
"
$DIRALLFILES
"
print_files |
while
read
line
;
do
touch
$DIRALLFILES
/
$(
basename
"
$line
"
)
done
}
download_files
()
{
ERROR
=
0
for
line
in
$DIRALLFILES
/
$MASK
;
do
$WGET
$URL
/
$(
basename
"
$line
"
)
||
ERROR
=
1
done
return
$ERROR
}
get_index
||
return
create_fake_files
download_files
||
echo
"There was some download errors"
>
&2
rm
-rf
"
$MYTMPDIR
"
}
INITDIR
=
/etc/init.d
PATH
=
$PATH
:/sbin:/usr/sbin
...
...
@@ -1242,8 +1425,17 @@ is_active_systemd && CMD="systemd"
SERVICETYPE
=
$CMD
ANYSERVICE
=
$(
which anyservice 2>/dev/null
)
}
# TODO: done it on anyservice part
is_anyservice
()
{
[
-n
"
$ANYSERVICE
"
]
||
return
# check if anyservice is exists and checkd returns true
$ANYSERVICE
"
$1
"
checkd 2>/dev/null
}
phelp
()
...
...
@@ -1260,7 +1452,7 @@ $(get_help HELPOPT)
print_version
()
{
echo
"Service manager version 1.
8.6
"
echo
"Service manager version 1.
9.1
"
echo
"Running on
$(
$DISTRVENDOR
)
"
echo
"Copyright (c) Etersoft 2012, 2013, 2016"
echo
"This program may be freely redistributed under the terms of the GNU AGPLv3."
...
...
@@ -1298,7 +1490,9 @@ check_command()
restart
)
# HELPCMD: restart service
serv_cmd
=
restart
;;
#reload) # HELPCMD: reload service
reload
)
# HELPCMD: reload service
serv_cmd
=
reload
;;
start
)
# HELPCMD: start service
serv_cmd
=
start
;;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment