#! perl # mandatory # over-the-air update # TODO: same face, different hashes, face needs new number cf::register_exticmd ota_update => sub { my ($ns, $urlader, $exe_id, $exe_ver) = @_; my ($face, $ver, $size, $md5, $changes); if ($face = cf::face::find "res/ota_update/$urlader,$exe_id.pck") { my $meta = cf::face::get_meta $face; if ($meta->{exe_ver} gt $exe_ver) { $size = cf::face::get_data_size $face; $ver = $meta->{exe_ver}; $md5 = $meta->{md5}; if (my $changes_face = cf::face::find "res/ota_update/Changes") { $changes = cf::face::get_data $changes_face; $changes =~ s/^\($exe_ver\).*$//sm; } } } cf::info "ota update request for <$urlader, $exe_id, $exe_ver> replying <$face,$ver,$size,*>"; (1, $face, $ver, $size, $md5, $changes) };