Difference between revisions of "Createlinks example script"
From SME Server
Jump to navigationJump to search(14 intermediate revisions by the same user not shown) | |||
Line 11: | Line 11: | ||
perl createlinks | perl createlinks | ||
− | ==== Example | + | ==== Example ==== |
− | #!/usr/bin/perl -w | + | #!/usr/bin/perl -w |
sub safe_symlink { | sub safe_symlink { | ||
Line 50: | Line 50: | ||
event_link("yum-check-repository", "yum-update", "40"); | event_link("yum-check-repository", "yum-update", "40"); | ||
− | + | ==== Example : smeserver-Sme8admin==== | |
+ | #! /usr/bin/perl -w | ||
+ | |||
+ | use esmith::Build::CreateLinks qw(:all); | ||
+ | |||
+ | # Start and stop links | ||
+ | service_link_enhanced("sme8admind", "S99", "7"); | ||
+ | service_link_enhanced("sme8admind", "K97", "6"); | ||
+ | service_link_enhanced("sme8admind", "K20", "0"); | ||
+ | service_link_enhanced("sme8admind", "K20", "1"); | ||
+ | |||
+ | # Links for the panel | ||
+ | panel_link("sme8admin", "manager"); | ||
+ | #system("mkdir -p root/etc/e-smith/web/panels/manager/html/sme8admin"); | ||
+ | safe_symlink("/etc/e-smith/web/panels/manager/html/sme8admin", "root/etc/e-smith/web/panels/user/html/sme8admin"); | ||
+ | |||
+ | # Logrotate | ||
+ | event_link("sme8admin-parselog","logrotate","15"); | ||
+ | |||
+ | ==== Example : smeserver-sharedfolder==== | ||
+ | #!/usr/bin/perl -w | ||
+ | |||
+ | use esmith::Build::CreateLinks qw(:all); | ||
+ | |||
+ | #-------------------------------------------------- | ||
+ | # functions for manager panel | ||
+ | #-------------------------------------------------- | ||
+ | my $panel = "manager"; | ||
+ | |||
+ | panel_link("shares", $panel); | ||
+ | panel_link("userpanel-encfs", $panel); | ||
+ | |||
+ | #-------------------------------------------------- | ||
+ | # actions for group-delete and user-delete events | ||
+ | #-------------------------------------------------- | ||
+ | |||
+ | foreach my $event (qw/group-delete user-delete/) { | ||
+ | event_link("group-share-modify", $event, "10"); | ||
+ | } | ||
+ | |||
+ | #-------------------------------------------------- | ||
+ | # actions for share-delete event | ||
+ | #-------------------------------------------------- | ||
+ | |||
+ | $event = "share-delete"; | ||
+ | |||
+ | event_link("share-delete", $event, "15"); | ||
+ | |||
+ | foreach my $event (qw(share-create share-modify share-modify-files)){ | ||
+ | event_link("share-modify", $event, "15"); | ||
+ | } | ||
+ | |||
+ | foreach my $event (qw(share-create share-modify share-delete share-modify-servers)){ | ||
+ | templates2events("/etc/samba/smb.conf", $event); | ||
+ | templates2events("/etc/httpd/conf/httpd.conf", $event); | ||
+ | templates2events("/etc/rsyncd.conf", $event); | ||
+ | templates2events("/etc/proftpd.conf", $event); | ||
+ | safe_symlink("sighup", "root/etc/e-smith/events/$event/services2adjust/smbd"); | ||
+ | safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/httpd-e-smith"); | ||
+ | safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/rsyncd"); | ||
+ | safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/ftp"); | ||
+ | } | ||
+ | |||
+ | #-------------------------------------------------- | ||
+ | # actions for group-modify event | ||
+ | #-------------------------------------------------- | ||
+ | |||
+ | $event = 'group-modify'; | ||
+ | |||
+ | templates2events("/etc/httpd/conf/httpd.conf", $event); | ||
+ | safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/httpd-e-smith"); | ||
+ | |||
+ | templates2events("/etc/fstab", "post-upgrade"); | ||
+ | |||
+ | safe_touch("root/etc/e-smith/templates/etc/smb.conf/shares/template-begin"); | ||
+ | |||
+ | safe_touch("root/var/service/rsyncd/down"); | ||
+ | service_link_enhanced("rsyncd", "S95", "7"); | ||
+ | service_link_enhanced("rsyncd", "K05", "6"); | ||
+ | service_link_enhanced("rsyncd", "K05", "0"); | ||
+ | safe_symlink("../daemontools" , 'root/etc/rc.d/init.d/supervise/rsyncd'); | ||
+ | safe_symlink("/var/service/rsyncd" , 'root/service/rsyncd'); | ||
+ | |||
+ | templates2events("/etc/rsyncd.conf", "bootstrap-console-save"); | ||
+ | templates2events("/etc/rsyncd.conf", "remoteaccess-update"); | ||
+ | |||
+ | ==== Example : smeserver-denyhost ==== | ||
+ | |||
+ | #!/usr/bin/perl -w | ||
+ | |||
+ | use esmith::Build::CreateLinks qw(:all); | ||
+ | |||
+ | panel_link("denyhosts", "manager"); | ||
+ | |||
+ | service_link_enhanced("denyhosts", "S01", "7"); | ||
+ | |||
+ | safe_symlink('restart', "root/etc/e-smith/events/conf-denyhosts/services2adjust/denyhosts"); | ||
+ | |||
+ | foreach $file ( | ||
+ | qw(/var/lib/denyhosts/allowed-hosts /etc/hosts.allow /etc/denyhosts.conf)) | ||
+ | { | ||
+ | templates2events($file, qw(bootstrap-console-save conf-denyhosts)); | ||
+ | } | ||
+ | |||
+ | exit 0; | ||
+ | |||
+ | ==== Example : smeserver-roundcube ==== | ||
+ | |||
+ | #!/usr/bin/perl -w | ||
+ | |||
+ | use esmith::Build::CreateLinks qw(:all); | ||
+ | |||
+ | for my $event (qw( | ||
+ | bootstrap-console-save | ||
+ | conf-roundcube | ||
+ | post-upgrade | ||
+ | )) | ||
+ | { | ||
+ | templates2events("/opt/roundcube/config/db.inc.php", $event); | ||
+ | templates2events("/opt/roundcube/config/main.inc.php", $event); | ||
+ | templates2events("/etc/e-smith/sql/init/80roundcube", $event); | ||
+ | } | ||
+ | |||
+ | for my $event (qw( | ||
+ | conf-roundcube | ||
+ | )) | ||
+ | { | ||
+ | templates2events("/etc/httpd/conf/httpd.conf", $event); | ||
+ | safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/mysql.init");; | ||
+ | safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/httpd-e-smith"); | ||
+ | } | ||
+ | |||
+ | ==== Example : smeserver-yum ==== | ||
+ | #!/usr/bin/perl -w | ||
+ | |||
+ | use esmith::Build::CreateLinks qw(:all); | ||
+ | use File::Basename; | ||
+ | use File::Path; | ||
+ | |||
+ | foreach my $file (qw(/etc/yum.conf)) | ||
+ | { | ||
+ | templates2events($file, qw(yum-modify bootstrap-console-save)); | ||
+ | } | ||
+ | |||
+ | templates2events("/etc/crontab", "yum-modify"); | ||
+ | |||
+ | for ( qw(install remove update) ) | ||
+ | { | ||
+ | event_link("yum-action", "yum-$_", "20"); | ||
+ | event_link("initialize-default-databases", "yum-$_", "50"); | ||
+ | event_link("navigation-conf", "yum-$_", "80"); | ||
+ | } | ||
+ | |||
+ | for ( qw(install remove update modify) ) | ||
+ | { | ||
+ | event_link("yum-update-dbs", "yum-$_", "90"); | ||
+ | } | ||
+ | |||
+ | for ( qw(bootstrap-console-save yum-update) ) | ||
+ | { | ||
+ | event_link("yum-import-keys", $_, "10"); | ||
+ | } | ||
+ | |||
+ | safe_symlink("once", "root/etc/e-smith/events/local/services2adjust/yum"); | ||
+ | |||
+ | #-------------------------------------------------- | ||
+ | # functions for manager panel | ||
+ | #-------------------------------------------------- | ||
+ | panel_link("yum", "manager"); | ||
+ | |||
+ | ==== Example : smeserver-phplist ==== | ||
+ | #!/usr/bin/perl -w | ||
+ | |||
+ | use esmith::Build::CreateLinks qw(:all); | ||
+ | |||
+ | templates2events("/etc/e-smith/sql/init/phplistdb", qw/webapps-update bootstrap-console-save/); | ||
+ | templates2events("/etc/phplist/config.php", qw/webapps-update bootstrap-console-save/); | ||
+ | |||
+ | safe_symlink("/var/qmail/bin/qmail-newu", "root/etc/e-smith/events/webapps-update/S55phplist-qmail-assign"); | ||
+ | foreach my $event (qw/webapps-update ipasserelle-update bootstrap-ldap-save/){ | ||
+ | event_link("phplist-create-pseudo", "$event", "55"); | ||
+ | } | ||
+ | |||
+ | safe_symlink("/etc/e-smith/templates-default/template-begin-php", "root/etc/e-smith/templates/etc/phplist/config.php/template-begin"); | ||
+ | safe_symlink("/etc/e-smith/templates-default/template-end-php", "root/etc/e-smith/templates/etc/phplist/config.php/template-end"); | ||
+ | |||
+ | safe_symlink("/var/qmail/alias/.qmail-phplistbounces", "root/var/qmail/alias/.qmail-phplistbounces-default"); | ||
+ | |||
+ | safe_symlink("../daemontools" , 'root/etc/rc.d/init.d/supervise/phplist'); | ||
+ | safe_symlink("/var/service/phplist" , 'root/service/phplist'); | ||
+ | safe_touch("root/var/service/phplist/down"); | ||
+ | safe_symlink("restart", "root/etc/e-smith/events/webapps-update/services2adjust/phplist"); | ||
+ | |||
+ | service_link_enhanced('phplist', 'S98', '7'); | ||
+ | service_link_enhanced('phplist', 'K12', '6'); | ||
+ | service_link_enhanced('phplist', 'K12', '0'); | ||
+ | |||
+ | safe_touch("root/var/lib/phplist/bounces.mbox"); | ||
+ | |||
[[Category:SME Server Development Framework]] | [[Category:SME Server Development Framework]] | ||
[[Category:Development Tools]] | [[Category:Development Tools]] | ||
[[Category:SME9-Development]] | [[Category:SME9-Development]] |
Latest revision as of 12:06, 1 September 2014
The build section lists commands to run as part of the build process This is where you can use a root/createlinks script to create events and action links. see
- Esmith::Build::CreateLinks
- SME_Server:Documentation:Developers_Manual#The_createlinks_script
- .spec_file_notes
%build perl createlinks
Example
#!/usr/bin/perl -w sub safe_symlink { my ($from, $to) = @_; use File::Basename; use File::Path; mkpath(dirname($to)); unlink($to); symlink($from, $to) or die "Can't create symlink from $from to $to: $!"; } sub panel_link { my ($function, $panel) = @_; safe_symlink("../../../functions/$function", "root/etc/e-smith/web/panels/$panel/cgi-bin/$function"); } sub event_link { my ($action, $event, $level) = @_; safe_symlink("../actions/${action}", "root/etc/e-smith/events/${event}/S${level}${action}"); } #-------------------------------------------------- # functions for manager panel #-------------------------------------------------- panel_link("yum", "manager"); #-------------------------------------------------- # actions for yum-update event #-------------------------------------------------- event_link("initialize-default-databases", "yum-update", "10"); event_link("conf-yum", "yum-update", "20"); event_link("yum-arch-repository", "yum-update", "30"); event_link("yum-check-repository", "yum-update", "40");
Example : smeserver-Sme8admin
#! /usr/bin/perl -w use esmith::Build::CreateLinks qw(:all); # Start and stop links service_link_enhanced("sme8admind", "S99", "7"); service_link_enhanced("sme8admind", "K97", "6"); service_link_enhanced("sme8admind", "K20", "0"); service_link_enhanced("sme8admind", "K20", "1"); # Links for the panel panel_link("sme8admin", "manager"); #system("mkdir -p root/etc/e-smith/web/panels/manager/html/sme8admin"); safe_symlink("/etc/e-smith/web/panels/manager/html/sme8admin", "root/etc/e-smith/web/panels/user/html/sme8admin"); # Logrotate event_link("sme8admin-parselog","logrotate","15");
#!/usr/bin/perl -w use esmith::Build::CreateLinks qw(:all); #-------------------------------------------------- # functions for manager panel #-------------------------------------------------- my $panel = "manager"; panel_link("shares", $panel); panel_link("userpanel-encfs", $panel); #-------------------------------------------------- # actions for group-delete and user-delete events #-------------------------------------------------- foreach my $event (qw/group-delete user-delete/) { event_link("group-share-modify", $event, "10"); } #-------------------------------------------------- # actions for share-delete event #-------------------------------------------------- $event = "share-delete"; event_link("share-delete", $event, "15"); foreach my $event (qw(share-create share-modify share-modify-files)){ event_link("share-modify", $event, "15"); } foreach my $event (qw(share-create share-modify share-delete share-modify-servers)){ templates2events("/etc/samba/smb.conf", $event); templates2events("/etc/httpd/conf/httpd.conf", $event); templates2events("/etc/rsyncd.conf", $event); templates2events("/etc/proftpd.conf", $event); safe_symlink("sighup", "root/etc/e-smith/events/$event/services2adjust/smbd"); safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/httpd-e-smith"); safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/rsyncd"); safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/ftp"); } #-------------------------------------------------- # actions for group-modify event #-------------------------------------------------- $event = 'group-modify'; templates2events("/etc/httpd/conf/httpd.conf", $event); safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/httpd-e-smith"); templates2events("/etc/fstab", "post-upgrade"); safe_touch("root/etc/e-smith/templates/etc/smb.conf/shares/template-begin"); safe_touch("root/var/service/rsyncd/down"); service_link_enhanced("rsyncd", "S95", "7"); service_link_enhanced("rsyncd", "K05", "6"); service_link_enhanced("rsyncd", "K05", "0"); safe_symlink("../daemontools" , 'root/etc/rc.d/init.d/supervise/rsyncd'); safe_symlink("/var/service/rsyncd" , 'root/service/rsyncd'); templates2events("/etc/rsyncd.conf", "bootstrap-console-save"); templates2events("/etc/rsyncd.conf", "remoteaccess-update");
Example : smeserver-denyhost
#!/usr/bin/perl -w use esmith::Build::CreateLinks qw(:all); panel_link("denyhosts", "manager"); service_link_enhanced("denyhosts", "S01", "7"); safe_symlink('restart', "root/etc/e-smith/events/conf-denyhosts/services2adjust/denyhosts"); foreach $file ( qw(/var/lib/denyhosts/allowed-hosts /etc/hosts.allow /etc/denyhosts.conf)) { templates2events($file, qw(bootstrap-console-save conf-denyhosts)); } exit 0;
Example : smeserver-roundcube
#!/usr/bin/perl -w use esmith::Build::CreateLinks qw(:all); for my $event (qw( bootstrap-console-save conf-roundcube post-upgrade )) { templates2events("/opt/roundcube/config/db.inc.php", $event); templates2events("/opt/roundcube/config/main.inc.php", $event); templates2events("/etc/e-smith/sql/init/80roundcube", $event); } for my $event (qw( conf-roundcube )) { templates2events("/etc/httpd/conf/httpd.conf", $event); safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/mysql.init");; safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/httpd-e-smith"); }
Example : smeserver-yum
#!/usr/bin/perl -w use esmith::Build::CreateLinks qw(:all); use File::Basename; use File::Path; foreach my $file (qw(/etc/yum.conf)) { templates2events($file, qw(yum-modify bootstrap-console-save)); } templates2events("/etc/crontab", "yum-modify"); for ( qw(install remove update) ) { event_link("yum-action", "yum-$_", "20"); event_link("initialize-default-databases", "yum-$_", "50"); event_link("navigation-conf", "yum-$_", "80"); } for ( qw(install remove update modify) ) { event_link("yum-update-dbs", "yum-$_", "90"); } for ( qw(bootstrap-console-save yum-update) ) { event_link("yum-import-keys", $_, "10"); } safe_symlink("once", "root/etc/e-smith/events/local/services2adjust/yum"); #-------------------------------------------------- # functions for manager panel #-------------------------------------------------- panel_link("yum", "manager");
Example : smeserver-phplist
#!/usr/bin/perl -w use esmith::Build::CreateLinks qw(:all); templates2events("/etc/e-smith/sql/init/phplistdb", qw/webapps-update bootstrap-console-save/); templates2events("/etc/phplist/config.php", qw/webapps-update bootstrap-console-save/); safe_symlink("/var/qmail/bin/qmail-newu", "root/etc/e-smith/events/webapps-update/S55phplist-qmail-assign"); foreach my $event (qw/webapps-update ipasserelle-update bootstrap-ldap-save/){ event_link("phplist-create-pseudo", "$event", "55"); } safe_symlink("/etc/e-smith/templates-default/template-begin-php", "root/etc/e-smith/templates/etc/phplist/config.php/template-begin"); safe_symlink("/etc/e-smith/templates-default/template-end-php", "root/etc/e-smith/templates/etc/phplist/config.php/template-end"); safe_symlink("/var/qmail/alias/.qmail-phplistbounces", "root/var/qmail/alias/.qmail-phplistbounces-default"); safe_symlink("../daemontools" , 'root/etc/rc.d/init.d/supervise/phplist'); safe_symlink("/var/service/phplist" , 'root/service/phplist'); safe_touch("root/var/service/phplist/down"); safe_symlink("restart", "root/etc/e-smith/events/webapps-update/services2adjust/phplist"); service_link_enhanced('phplist', 'S98', '7'); service_link_enhanced('phplist', 'K12', '6'); service_link_enhanced('phplist', 'K12', '0'); safe_touch("root/var/lib/phplist/bounces.mbox");