pax_global_header 0000666 0000000 0000000 00000000064 12346267215 0014522 g ustar 00root root 0000000 0000000 52 comment=6f4735130f7b0528a6f190c9e69890bbf159435f slapos-6f4735130f7b0528a6f190c9e69890bbf159435f-software-backupserver/ 0000775 0000000 0000000 00000000000 12346267215 0024072 5 ustar 00root root 0000000 0000000 slapos-6f4735130f7b0528a6f190c9e69890bbf159435f-software-backupserver/software/ 0000775 0000000 0000000 00000000000 12346267215 0025724 5 ustar 00root root 0000000 0000000 slapos-6f4735130f7b0528a6f190c9e69890bbf159435f-software-backupserver/software/backupserver/ 0000775 0000000 0000000 00000000000 12346267215 0030420 5 ustar 00root root 0000000 0000000 instance-pullrdiffbackup.cfg.in 0000664 0000000 0000000 00000015574 12346267215 0036422 0 ustar 00root root 0000000 0000000 slapos-6f4735130f7b0528a6f190c9e69890bbf159435f-software-backupserver/software/backupserver {% set part_list = [] -%} {% set crontab_line_list = [] -%} ############################### # # Instanciate dcron # ############################### [directory] recipe = slapos.cookbook:mkdirectory etc = $${buildout:directory}/etc bin = $${buildout:directory}/bin srv = $${buildout:directory}/srv var = $${buildout:directory}/var run = $${:var}/run log = $${:var}/log varnginx = $${:var}/nginx # scripts = $${:etc}/run services = $${:etc}/service cron-entries = $${:etc}/cron.d cron-lines = $${:etc}/cron.lines crontabs = $${:etc}/crontabs cronstamps = $${:etc}/cronstamps backup = $${:srv}/backup status = $${:srv}/status statistic = $${:srv}/statistic backupscript = $${:etc}/backup www = $${:srv}/www home = $${:etc}/home ssl = $${:etc}/ssl ssh = $${:home}/.ssh ################################# # Cron service ################################# [dcron-service] recipe = slapos.recipe.template url = ${template-dcron-service:output} output = $${directory:services}/crond mode = 0700 logfile = $${directory:log}/crond.log ################################# # Slave backup scripts and crontab ################################# # Go throught slave list to set their configuration {% for slave_instance in slave_instance_list -%} {% set slave_reference = slave_instance.get('slave_reference') -%} {% set frequency = slave_instance.get('frequency', '') -%} {% set hostname = slave_instance.get('hostname', '') -%} {% set connection = slave_instance.get('connection', '') -%} {% set include = slave_instance.get('include', '') -%} {% set include_string = "' --include='".join(include.split(' ')) -%} {% set exclude = slave_instance.get('exclude', '') -%} {% set exclude_string = '' -%} {% set sudo = slave_instance.get('sudo', 'False') -%} {% set remote_schema = 'rdiff-backup --server --restrict-read-only / -- "$@"' -%} {% if (exclude != '') -%} {% set exclude_string = "' --exclude='".join(exclude.split(' ')) -%} {% set exclude_string = "--exclude='" + exclude_string + "'" -%} {% endif -%} {% if (sudo == 'True') -%} {% set remote_schema = 'sudo backupagent_rdiff-backup' -%} {% endif -%} {% if (frequency != '') and (hostname != '') and (connection != '') and (include != '') -%} [{{ slave_reference }}-backup-directory] recipe = slapos.cookbook:mkdirectory directory = $${directory:backup}/$${:_buildout_section_name_} [{{ slave_reference }}-backup-private_key] recipe = plone.recipe.command stop-on-error = false command = ${dropbear-output:keygen} -t $${:type} -s 2048 -f $${:key} key = $${directory:ssh}/$${:_buildout_section_name_} type = rsa [{{ slave_reference }}-backup-public_key] recipe = plone.recipe.command stop-on-error = true command = ${coreutils-output:rm} -f $${:key} && ${dropbear-output:keygen} -y -f {{ '$${' ~ slave_reference }}-backup-private_key:key} | ${grep-output:grep} {{ '$${' ~ slave_reference }}-backup-private_key:type} > $${:key} key = {{ '$${' ~ slave_reference }}-backup-private_key:key}.pub location = $${:key} # Insert as a beginning part, to ensure that all public keys are generated before trying to publish. This will reduce the number of slapgrid-cp run. {% do part_list.insert(0, "%s-backup-public_key" % slave_reference) -%} [{{ slave_reference }}-backup-read-public_key] recipe = slapos.cookbook:readline storage-path = {{ '$${' ~ slave_reference }}-backup-public_key:key} # Publish slave {{ slave_reference }} information [{{ slave_reference }}-backup-publish] recipe = slapos.cookbook:publish -slave-reference = {{ slave_reference }} authorized_key = {{ '$${' ~ slave_reference }}-backup-read-public_key:readline} rss = https://[$${nginx-configuration:ip}]:$${nginx-configuration:port}/{{ '$${' ~ slave_reference }}-backup-script:status_name}.rss {% do part_list.append("%s-backup-publish" % slave_reference) -%} [{{ slave_reference }}-backup-script] recipe = slapos.recipe.template url = ${template-backup-script:output} output = $${directory:backupscript}/$${:_buildout_section_name_} mode = 0700 datadirectory = {{ '$${' ~ slave_reference }}-backup-directory:directory} sshkey = {{ '$${' ~ slave_reference }}-backup-private_key:key} connection = {{ connection }} hostname = {{ hostname }} include = {{ include_string }} exclude_string = {{ exclude_string }} remote_schema = {{ remote_schema }} status_name = {{ slave_reference }}_status.txt statistic_name = {{ slave_reference }}_statistic.txt status_log = $${directory:status}/$${:status_name} statistic_log = $${directory:statistic}/$${:statistic_name} [{{ slave_reference }}-backup-crontab-line] recipe = slapos.recipe.template url = ${template-crontab-line:output} output = $${directory:cron-lines}/$${:_buildout_section_name_} mode = 0600 script = {{ '$${' ~ slave_reference }}-backup-script:output} frequency = {{ frequency }} {% do crontab_line_list.append("$${%s-backup-crontab-line:output}" % slave_reference) -%} {% endif -%} {% endfor -%} ################################# # Generate crontab file ################################# [update-rss-script] recipe = slapos.recipe.template url = ${template-update-rss-script:output} output = $${directory:etc}/$${:_buildout_section_name_} mode = 0700 global_rss = $${slap-connection:computer-id}-$${slap-connection:partition-id}.rss [update-rss-crontab-line] recipe = slapos.recipe.template url = ${template-crontab-line:output} output = $${directory:cron-lines}/$${:_buildout_section_name_} mode = 0600 script = $${update-rss-script:output} frequency = */5 * * * * {% do crontab_line_list.append("$${update-rss-crontab-line:output}") -%} [publish-global-rss] recipe = slapos.cookbook:publish rss = https://[$${nginx-configuration:ip}]:$${nginx-configuration:port}/$${update-rss-script:global_rss} {% set crontab_line_list_string = " ".join(crontab_line_list) -%} [activate-crontab-file] # XXX File is never removed recipe = plone.recipe.command stop-on-error = true command = ${coreutils-output:cat} ${template-crontab:output} {{ crontab_line_list_string }} | ${dcron-output:crontab} -c $${directory:crontabs} - ################################# # Nginx service ################################# [nginx-service] recipe = slapos.recipe.template url = ${template-nginx-service:output} output = $${directory:services}/nginx mode = 0700 virtual-depends = $${nginx-configuration:ip} [nginx-configuration] recipe = slapos.recipe.template url = ${template-nginx-configuration:output} output = $${directory:etc}/nginx.cfg mode = 0600 access_log = $${directory:log}/nginx-access.log error_log = $${directory:log}/nginx-error.log ip = $${slap-network-information:global-ipv6} port = 9443 ssl_key = $${directory:ssl}/nginx.key ssl_csr = $${directory:ssl}/nginx.csr ssl_crt = $${directory:ssl}/nginx.crt # Add parts generated by template [buildout] parts = dcron-service nginx-service activate-crontab-file publish-global-rss {% for part in part_list -%} {{ ' %s' % part }} {% endfor -%} eggs-directory = ${buildout:eggs-directory} develop-eggs-directory = ${buildout:develop-eggs-directory} offline = true instance.cfg.in 0000664 0000000 0000000 00000002676 12346267215 0033246 0 ustar 00root root 0000000 0000000 slapos-6f4735130f7b0528a6f190c9e69890bbf159435f-software-backupserver/software/backupserver [buildout] parts = switch-softwaretype eggs-directory = ${buildout:eggs-directory} develop-eggs-directory = ${buildout:develop-eggs-directory} offline = true [dynamic-template-pullrdiffbackup] recipe = slapos.recipe.template:jinja2 template = ${template-pullrdiffbackup:output} rendered = $${buildout:parts-directory}/$${:_buildout_section_name_}/$${:filename} filename = instance-pullrdiffbackup.cfg extensions = jinja2.ext.do context = key slave_instance_list instance-parameter:slave-instance-list [switch-softwaretype] recipe = slapos.cookbook:softwaretype default = $${:pullrdiffbackup} # pullrdiffbackup = ${template-pullrdiffbackup:output} pullrdiffbackup = $${dynamic-template-pullrdiffbackup:rendered} [slap-connection] # part to migrate to new - separated words computer-id = $${slap_connection:computer_id} partition-id = $${slap_connection:partition_id} server-url = $${slap_connection:server_url} software-release-url = $${slap_connection:software_release_url} key-file = $${slap_connection:key_file} cert-file = $${slap_connection:cert_file} # [slap-parameter] # slave-instance-list = [] [instance-parameter] # Fetches parameters defined in SlapOS Master for this instance. # Always the same. recipe = slapos.cookbook:slapconfiguration.serialised computer = $${slap_connection:computer_id} partition = $${slap_connection:partition_id} url = $${slap_connection:server_url} key = $${slap_connection:key_file} cert = $${slap_connection:cert_file} software.cfg 0000664 0000000 0000000 00000027516 12346267215 0032667 0 ustar 00root root 0000000 0000000 slapos-6f4735130f7b0528a6f190c9e69890bbf159435f-software-backupserver/software/backupserver [buildout] extends = ../../component/dash/buildout.cfg ../../component/dcron/buildout.cfg ../../component/logrotate/buildout.cfg ../../component/openssl/buildout.cfg ../../component/nginx/buildout.cfg ../../component/rdiff-backup/buildout.cfg # ../../component/duplicity/buildout.cfg # ../../component/git/buildout.cfg # ../../component/subversion/buildout.cfg ../../component/rsync/buildout.cfg ../../component/dropbear/buildout.cfg ../../component/grep/buildout.cfg ../../component/findutils/buildout.cfg # ../../stack/flask.cfg ../../stack/slapos.cfg parts = extra-eggs rdiff-backup # duplicity dcron logrotate nginx openssl # git # subversion rsync # flask-egg template template-pullrdiffbackup template-backup-script template-crontab-line slapos-cookbook [extra-eggs] recipe = zc.recipe.egg interpreter = pythonforrssgen eggs = PyRSS2Gen [networkcache] # signature certificates of the following uploaders. # Romain Courteaud # Sebastien Robin # Kazuhiko Shiozaki # Cedric de Saint Martin # Yingjie Xu # Gabriel Monnerat # Łukasz Nowak # Test Agent (Automatic update from tests) # Aurélien Calonne signature-certificate-list = -----BEGIN CERTIFICATE----- MIIB4DCCAUkCADANBgkqhkiG9w0BAQsFADA5MQswCQYDVQQGEwJGUjEZMBcGA1UE CBMQRGVmYXVsdCBQcm92aW5jZTEPMA0GA1UEChMGTmV4ZWRpMB4XDTExMDkxNTA5 MDAwMloXDTEyMDkxNTA5MDAwMlowOTELMAkGA1UEBhMCRlIxGTAXBgNVBAgTEERl ZmF1bHQgUHJvdmluY2UxDzANBgNVBAoTBk5leGVkaTCBnzANBgkqhkiG9w0BAQEF AAOBjQAwgYkCgYEApYZv6OstoqNzxG1KI6iE5U4Ts2Xx9lgLeUGAMyfJLyMmRLhw boKOyJ9Xke4dncoBAyNPokUR6iWOcnPHtMvNOsBFZ2f7VA28em3+E1JRYdeNUEtX Z0s3HjcouaNAnPfjFTXHYj4um1wOw2cURSPuU5dpzKBbV+/QCb5DLheynisCAwEA ATANBgkqhkiG9w0BAQsFAAOBgQBCZLbTVdrw3RZlVVMFezSHrhBYKAukTwZrNmJX mHqi2tN8tNo6FX+wmxUUAf3e8R2Ymbdbn2bfbPpcKQ2fG7PuKGvhwMG3BlF9paEC q7jdfWO18Zp/BG7tagz0jmmC4y/8akzHsVlruo2+2du2freE8dK746uoMlXlP93g QUUGLQ== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIB8jCCAVugAwIBAgIJAPu2zchZ2BxoMA0GCSqGSIb3DQEBBQUAMBIxEDAOBgNV BAMMB3RzeGRldjMwHhcNMTExMDE0MTIxNjIzWhcNMTIxMDEzMTIxNjIzWjASMRAw DgYDVQQDDAd0c3hkZXYzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrPbh+ YGmo6mWmhVb1vTqX0BbeU0jCTB8TK3i6ep3tzSw2rkUGSx3niXn9LNTFNcIn3MZN XHqbb4AS2Zxyk/2tr3939qqOrS4YRCtXBwTCuFY6r+a7pZsjiTNddPsEhuj4lEnR L8Ax5mmzoi9nE+hiPSwqjRwWRU1+182rzXmN4QIDAQABo1AwTjAdBgNVHQ4EFgQU /4XXREzqBbBNJvX5gU8tLWxZaeQwHwYDVR0jBBgwFoAU/4XXREzqBbBNJvX5gU8t LWxZaeQwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQA07q/rKoE7fAda FED57/SR00OvY9wLlFEF2QJ5OLu+O33YUXDDbGpfUSF9R8l0g9dix1JbWK9nQ6Yd R/KCo6D0sw0ZgeQv1aUXbl/xJ9k4jlTxmWbPeiiPZEqU1W9wN5lkGuLxV4CEGTKU hJA/yXa1wbwIPGvX3tVKdOEWPRXZLg== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIB7jCCAVegAwIBAgIJAJWA0jQ4o9DGMA0GCSqGSIb3DQEBBQUAMA8xDTALBgNV BAMMBHg2MXMwIBcNMTExMTI0MTAyNDQzWhgPMjExMTEwMzExMDI0NDNaMA8xDTAL BgNVBAMMBHg2MXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANdJNiFsRlkH vq2kHP2zdxEyzPAWZH3CQ3Myb3F8hERXTIFSUqntPXDKXDb7Y/laqjMXdj+vptKk 3Q36J+8VnJbSwjGwmEG6tym9qMSGIPPNw1JXY1R29eF3o4aj21o7DHAkhuNc5Tso 67fUSKgvyVnyH4G6ShQUAtghPaAwS0KvAgMBAAGjUDBOMB0GA1UdDgQWBBSjxFUE RfnTvABRLAa34Ytkhz5vPzAfBgNVHSMEGDAWgBSjxFUERfnTvABRLAa34Ytkhz5v PzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAFLDS7zNhlrQYSQO5KIj z2RJe3fj4rLPklo3TmP5KLvendG+LErE2cbKPqnhQ2oVoj6u9tWVwo/g03PMrrnL KrDm39slYD/1KoE5kB4l/p6KVOdeJ4I6xcgu9rnkqqHzDwI4v7e8/D3WZbpiFUsY vaZhjNYKWQf79l6zXfOvphzJ -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIB9jCCAV+gAwIBAgIJAO4V/jiMoICoMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV BAMMCENPTVAtMjMyMCAXDTEyMDIxNjExMTAyM1oYDzIxMTIwMTIzMTExMDIzWjAT MREwDwYDVQQDDAhDT01QLTIzMjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA wi/3Z8W9pUiegUXIk/AiFDQ0UJ4JFAwjqr+HSRUirlUsHHT+8DzH/hfcTDX1I5BB D1ADk+ydXjMm3OZrQcXjn29OUfM5C+g+oqeMnYQImN0DDQIOcUyr7AJc4xhvuXQ1 P2pJ5NOd3tbd0kexETa1LVhR6EgBC25LyRBRae76qosCAwEAAaNQME4wHQYDVR0O BBYEFMDmW9aFy1sKTfCpcRkYnP6zUd1cMB8GA1UdIwQYMBaAFMDmW9aFy1sKTfCp cRkYnP6zUd1cMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAskbFizHr b6d3iIyN+wffxz/V9epbKIZVEGJd/6LrTdLiUfJPec7FaxVCWNyKBlCpINBM7cEV Gn9t8mdVQflNqOlAMkOlUv1ZugCt9rXYQOV7rrEYJBWirn43BOMn9Flp2nibblby If1a2ZoqHRxoNo2yTmm7TSYRORWVS+vvfjY= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIB9jCCAV+gAwIBAgIJAIlBksrZVkK8MA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV BAMMCENPTVAtMzU3MCAXDTEyMDEyNjEwNTUyOFoYDzIxMTIwMTAyMTA1NTI4WjAT MREwDwYDVQQDDAhDT01QLTM1NzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA ts+iGUwi44vtIfwXR8DCnLtHV4ydl0YTK2joJflj0/Ws7mz5BYkxIU4fea/6+VF3 i11nwBgYgxQyjNztgc9u9O71k1W5tU95yO7U7bFdYd5uxYA9/22fjObaTQoC4Nc9 mTu6r/VHyJ1yRsunBZXvnk/XaKp7gGE9vNEyJvPn2bkCAwEAAaNQME4wHQYDVR0O BBYEFKuGIYu8+6aEkTVg62BRYaD11PILMB8GA1UdIwQYMBaAFKuGIYu8+6aEkTVg 62BRYaD11PILMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAMoTRpBxK YLEZJbofF7gSrRIcrlUJYXfTfw1QUBOKkGFFDsiJpEg4y5pUk1s5Jq9K3SDzNq/W it1oYjOhuGg3al8OOeKFrU6nvNTF1BAvJCl0tr3POai5yXyN5jlK/zPfypmQYxE+ TaqQSGBJPVXYt6lrq/PRD9ciZgKLOwEqK8w= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIB9jCCAV+gAwIBAgIJAPHoWu90gbsgMA0GCSqGSIb3DQEBBQUAMBQxEjAQBgNV BAMMCXZpZmlibm9kZTAeFw0xMjAzMTkyMzIwNTVaFw0xMzAzMTkyMzIwNTVaMBQx EjAQBgNVBAMMCXZpZmlibm9kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA ozBijpO8PS5RTeKTzA90vi9ezvv4vVjNaguqT4UwP9+O1+i6yq1Y2W5zZxw/Klbn oudyNzie3/wqs9VfPmcyU9ajFzBv/Tobm3obmOqBN0GSYs5fyGw+O9G3//6ZEhf0 NinwdKmrRX+d0P5bHewadZWIvlmOupcnVJmkks852BECAwEAAaNQME4wHQYDVR0O BBYEFF9EtgfZZs8L2ZxBJxSiY6eTsTEwMB8GA1UdIwQYMBaAFF9EtgfZZs8L2ZxB JxSiY6eTsTEwMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAc43YTfc6 baSemaMAc/jz8LNLhRE5dLfLOcRSoHda8y0lOrfe4lHT6yP5l8uyWAzLW+g6s3DA Yme/bhX0g51BmI6gjKJo5DoPtiXk/Y9lxwD3p7PWi+RhN+AZQ5rpo8UfwnnN059n yDuimQfvJjBFMVrdn9iP6SfMjxKaGk6gVmI= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIB9jCCAV+gAwIBAgIJAMNZBmoIOXPBMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV BAMMCENPTVAtMTMyMCAXDTEyMDUwMjEyMDQyNloYDzIxMTIwNDA4MTIwNDI2WjAT MREwDwYDVQQDDAhDT01QLTEzMjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA 6peZQt1sAmMAmSG9BVxxcXm8x15kE9iAplmANYNQ7z2YO57c10jDtlYlwVfi/rct xNUOKQtc8UQtV/fJWP0QT0GITdRz5X/TkWiojiFgkopza9/b1hXs5rltYByUGLhg 7JZ9dZGBihzPfn6U8ESAKiJzQP8Hyz/o81FPfuHCftsCAwEAAaNQME4wHQYDVR0O BBYEFNuxsc77Z6/JSKPoyloHNm9zF9yqMB8GA1UdIwQYMBaAFNuxsc77Z6/JSKPo yloHNm9zF9yqMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAl4hBaJy1 cgiNV2+Z5oNTrHgmzWvSY4duECOTBxeuIOnhql3vLlaQmo0p8Z4c13kTZq2s3nhd Loe5mIHsjRVKvzB6SvIaFUYq/EzmHnqNdpIGkT/Mj7r/iUs61btTcGUCLsUiUeci Vd0Ozh79JSRpkrdI8R/NRQ2XPHAo+29TT70= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIB9jCCAV+gAwIBAgIJAKRvzcy7OH0UMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV BAMMCENPTVAtNzcyMCAXDTEyMDgxMDE1NDI1MVoYDzIxMTIwNzE3MTU0MjUxWjAT MREwDwYDVQQDDAhDT01QLTc3MjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA o7aipd6MbnuGDeR1UJUjuMLQUariAyQ2l2ZDS6TfOwjHiPw/mhzkielgk73kqN7A sUREx41eTcYCXzTq3WP3xCLE4LxLg1eIhd4nwNHj8H18xR9aP0AGjo4UFl5BOMa1 mwoyBt3VtfGtUmb8whpeJgHhqrPPxLoON+i6fIbXDaUCAwEAAaNQME4wHQYDVR0O BBYEFEfjy3OopT2lOksKmKBNHTJE2hFlMB8GA1UdIwQYMBaAFEfjy3OopT2lOksK mKBNHTJE2hFlMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAaNRx6YN2 M/p3R8/xS6zvH1EqJ3FFD7XeAQ52WuQnKSREzuw0dsw12ClxjcHiQEFioyTiTtjs 5pW18Ry5Ie7iFK4cQMerZwWPxBodEbAteYlRsI6kePV7Gf735Y1RpuN8qZ2sYL6e x2IMeSwJ82BpdEI5niXxB+iT0HxhmR+XaMI= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIB+DCCAWGgAwIBAgIJAKGd0vpks6T/MA0GCSqGSIb3DQEBBQUAMBQxEjAQBgNV BAMMCUNPTVAtMTU4NDAgFw0xMzA2MjAxMjE5MjBaGA8yMTEzMDUyNzEyMTkyMFow FDESMBAGA1UEAwwJQ09NUC0xNTg0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB gQDZTH9etPUC+wMZQ3UIiOwyyCfHsJ+7duCFYjuo1uZrhtDt/fp8qb8qK9ob+df3 EEYgA0IgI2j/9jNUEnKbc5+OrfKznzXjrlrH7zU8lKBVNCLzQuqBKRNajZ+UvO8R nlqK2jZCXP/p3HXDYUTEwIR5W3tVCEn/Vda4upTLcPVE5wIDAQABo1AwTjAdBgNV HQ4EFgQU7KXaNDheQWoy5uOU01tn1M5vNkEwHwYDVR0jBBgwFoAU7KXaNDheQWoy 5uOU01tn1M5vNkEwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQASmqCU Znbvu6izdicvjuE3aKnBa7G++Fdp2bdne5VCwVbVLYCQWatB+n4crKqGdnVply/u +uZ16u1DbO9rYoKgWqjLk1GfiLw5v86pd5+wZd5I9QJ0/Sbz2vZk5S4ciMIGwArc m711+GzlW5xe6GyH9SZaGOPAdUbI6JTDwLzEgA== -----END CERTIFICATE----- ########################################################## # Service startup scripts and configuration files ########################################################## [template-nginx-service] recipe = slapos.recipe.template url = ${:_profile_base_location_}/template-nginx-service.sh.in md5sum = 5c94d952305552dcbeaeaeb27dd28f3b output = ${buildout:directory}/template-nginx-service.sh.in mode = 0644 [template-nginx-configuration] recipe = slapos.recipe.template url = ${:_profile_base_location_}/template-nginx.cfg.in md5sum = c54d36f55ba71c897505ed61213e104a output = ${buildout:directory}/template-nginx.cfg.in mode = 0644 [template-dcron-service] recipe = slapos.recipe.template url = ${:_profile_base_location_}/template-dcron-service.sh.in md5sum = 1372441dac23e4fa7d2dc773a74725ea output = ${buildout:directory}/template-dcron-service.sh.in mode = 0644 [template-backup-script] recipe = slapos.recipe.template url = ${:_profile_base_location_}/template-backup-script.sh.in md5sum = 0d8fb8ea80966af7d67ad50d50547dce output = ${buildout:directory}/template-backup-script.sh.in mode = 0644 [template-crontab-line] recipe = slapos.recipe.template url = ${:_profile_base_location_}/template-crontab-line.in md5sum = 5cbd64f04da0601ba4286516a6161f5e output = ${buildout:directory}/template-crontab-line.in mode = 0644 [template-crontab] recipe = slapos.recipe.template url = ${:_profile_base_location_}/template-crontab.in md5sum = 072be0fd04896880c931d44d8eabde37 output = ${buildout:directory}/template-crontab.in mode = 0644 [status2rss] recipe = slapos.recipe.template url = ${:_profile_base_location_}/status2rss.py md5sum = 0cd1cf97b199dd18fc0168c7281890ea output = ${buildout:directory}/status2rss.py mode = 0644 [template-update-rss-script] recipe = slapos.recipe.template url = ${:_profile_base_location_}/template-update-rss.sh.in md5sum = 529058c54e873ab26f7920c868b23c50 output = ${buildout:directory}/template-update-rss.sh.in mode = 0644 ########################################################## # Buildout instance.cfg templates ########################################################## [template-pullrdiffbackup] recipe = slapos.recipe.template url = ${:_profile_base_location_}/instance-pullrdiffbackup.cfg.in md5sum = 061b98d001b501c9e1beb424e8802d3d output = ${buildout:directory}/template-pullrdiffbackup.cfg mode = 0644 [template] recipe = slapos.recipe.template url = ${:_profile_base_location_}/instance.cfg.in md5sum = 42021b325159dff29e4bd4e33b8ff2f3 output = ${buildout:directory}/template.cfg mode = 0644 [versions] zc.buildout = 1.6.0-dev-SlapOS-010 rdiff-backup = 1.0.5 Jinja2 = 2.7 MarkupSafe = 0.18 Werkzeug = 0.9.1 buildout-versions = 1.7 gunicorn = 17.5 itsdangerous = 0.22 meld3 = 0.6.10 plone.recipe.command = 1.1 slapos.cookbook = 0.80 slapos.recipe.build = 0.11.6 slapos.recipe.cmmi = 0.1.1 slapos.recipe.template = 2.4.2 zc.recipe.egg = 1.3.2 PyRSS2Gen = 1.1 # Required by: # slapos.core==0.35.1 Flask = 0.10.1 # Required by: # slapos.cookbook==0.78.1 inotifyx = 0.2.0-1 # Required by: # slapos.cookbook==0.78.1 lock-file = 2.0 # Required by: # slapos.cookbook==0.78.1 # slapos.core==0.35.1 # xml-marshaller==0.9.7 lxml = 3.2.1 # Required by: # slapos.cookbook==0.78.1 netaddr = 0.7.10 # Required by: # slapos.core==0.35.1 netifaces = 0.10.4 # Required by: # slapos.core==0.35.1 pyflakes = 0.7.3 # Required by: # slapos.cookbook==0.78.1 pytz = 2013b # Required by: # slapos.cookbook==0.78.1 # slapos.core==0.35.1 # zc.buildout==1.6.0-dev-SlapOS-010 # zc.recipe.egg==1.3.2 setuptools = 0.9.5 # Required by: # slapos.cookbook==0.78.1 slapos.core = 0.35.1 # Required by: # slapos.core==0.35.1 supervisor = 3.0b2 # Required by: # slapos.core==0.35.1 unittest2 = 0.5.1 # Required by: # slapos.cookbook==0.78.1 xml-marshaller = 0.9.7 # Required by: # slapos.core==0.35.1 zope.interface = 4.0.5 cliff = 1.4 cmd2 = 0.6.5.1 prettytable = 0.7.2 requests = 1.2.3 cffi = 0.8.1 cryptography = 0.4 pyOpenSSL = 0.14 six = 1.5.2 # Required by: # cffi==0.8.1 pycparser = 2.10 status2rss.py 0000664 0000000 0000000 00000002116 12346267215 0033050 0 ustar 00root root 0000000 0000000 slapos-6f4735130f7b0528a6f190c9e69890bbf159435f-software-backupserver/software/backupserver import datetime import uuid import PyRSS2Gen import sys from email.utils import parsedate_tz, mktime_tz import base64 # Based on http://thehelpfulhacker.net/2011/03/27/a-rss-feed-for-your-crontabs/ # ### Defaults TITLE = sys.argv[1] LINK = sys.argv[2] DESCRIPTION = TITLE items = [] while 1: try: line = sys.stdin.readline() except KeyboardInterrupt: break if not line: break time, statistic, desc = line.split(',', 2) rss_item = PyRSS2Gen.RSSItem( title = desc, description = "
%s
" % "